Compare commits
403 Commits
6.19
..
6.99.2.403
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e667b3188 | |||
| 24339e7a64 | |||
| 8d1142e0dc | |||
| 43b4309aec | |||
| 52ba2f1b8b | |||
| 81284dcee5 | |||
| 0004954f4d | |||
| 10616d9fed | |||
| 2bf3049c23 | |||
| c30afc791b | |||
| edda89750e | |||
| b70a004f09 | |||
| e1ad973475 | |||
| bd082ea55e | |||
| 7639325203 | |||
| 6ce7f2c62d | |||
| 64bc5f02db | |||
| e2b27696a9 | |||
| 7e463c3356 | |||
| 9ee8e5573e | |||
| 77c2178462 | |||
| 84156d2a3d | |||
| 63f1f6c0bc | |||
| 4857cb789c | |||
| 40805225bd | |||
| 3773624ab0 | |||
| b2a02aa982 | |||
| 010b3a3d2f | |||
| 9cb9d7c210 | |||
| 46afd62be7 | |||
| eac9ee5b02 | |||
| f316315456 | |||
| efb62b030a | |||
| 6ea65debb6 | |||
| 5823474904 | |||
| e4bd06f4e0 | |||
| 9c569a8716 | |||
| 3a35aca5ef | |||
| a25c578b5f | |||
| 6e01fbc52e | |||
| 571cd76f21 | |||
| afa272bac3 | |||
| 59e021d1d8 | |||
| a0af700b43 | |||
| c3d035a5ae | |||
| 791e35d8fb | |||
| 2ab145ac19 | |||
| 51ba6d932b | |||
| 9fd33a16ac | |||
| 41bd5fa920 | |||
| df9e305639 | |||
| 6a54f8576c | |||
| 9658283e58 | |||
| 689d33760f | |||
| 9011554540 | |||
| 6ec7ccbe6b | |||
| 94ba4e62e1 | |||
| 9a3bc75241 | |||
| 3a27dfec9d | |||
| 00ee5d8eb3 | |||
| ce4086d58e | |||
| 815a297ae2 | |||
| 712306ffc3 | |||
| 33b802e749 | |||
| b26ea78a4b | |||
| e9343befc0 | |||
| d59dd71602 | |||
| b99e9d3afa | |||
| d5ee62fa13 | |||
| b8e1d39e49 | |||
| 868d0afb60 | |||
| b52a3ab75c | |||
| 7d5ca94f4a | |||
| 7cce474ca8 | |||
| 4a8c87f019 | |||
| 0cd3553099 | |||
| f929d3fa3d | |||
| 7f21671fc3 | |||
| 354862ba65 | |||
| 9e51fc584c | |||
| 54f9cd752a | |||
| 3614d6659f | |||
| 2bc3929540 | |||
| c050a2dbd7 | |||
| 00c55c31a7 | |||
| f1cd67446b | |||
| 22f95f7d83 | |||
| 8b6026cf7f | |||
| d18232093d | |||
| ce1bcb3535 | |||
| fc8fd41e90 | |||
| 3f23fa3606 | |||
| 023a8b9b47 | |||
| 04ed3ff098 | |||
| 36a3ecbbd3 | |||
| 66fc3c47ae | |||
| 6a730bbffc | |||
| 0b91488206 | |||
| ea8c3a69fb | |||
| 324d637607 | |||
| daf7619e52 | |||
| 1914c1b6fe | |||
| 4f9eabeb28 | |||
| 80158aa151 | |||
| 907fc3f29e | |||
| b65089fbed | |||
| c334aeece2 | |||
| b7be16b987 | |||
| c2f07ca7ca | |||
| 9b1c9ff25d | |||
| f89191bbf9 | |||
| 98120814da | |||
| 6af546147a | |||
| ff177be12c | |||
| 3e6ddc46b6 | |||
| 1094f693f0 | |||
| f0efeede9a | |||
| ecbe84ad39 | |||
| 302fa846ca | |||
| 511d48f067 | |||
| 5b0a6ede56 | |||
| cec6ebd9df | |||
| cd3b7c1239 | |||
| 86f759c80f | |||
| 7ce97dbaeb | |||
| 0b317c4c24 | |||
| 4c6fd3c8fa | |||
| f5cc5e5829 | |||
| f284d82f9d | |||
| 8c1f6c7701 | |||
| 82d40f75f5 | |||
| a755b04ab1 | |||
| 8c5fcc9a95 | |||
| 6625a46dcb | |||
| c7b7e26c33 | |||
| 45c61c4972 | |||
| b944591ec7 | |||
| 3c3c8c7933 | |||
| e0207369c3 | |||
| 40de615c66 | |||
| 53c50b1e00 | |||
| 95f39c725f | |||
| 0e251e1bf4 | |||
| cd136bc6a0 | |||
| b66ede5e19 | |||
| ba7d4e6582 | |||
| bda9f96f28 | |||
| 2f77e1fd4a | |||
| 3d4ef2df96 | |||
| 2b20ef7834 | |||
| e4fe7f3586 | |||
| 7cfc6ad1ba | |||
| 57c27cfde4 | |||
| 3ceec0b62d | |||
| fe1d1e5499 | |||
| ca944b5089 | |||
| 92163cd704 | |||
| edfd705a52 | |||
| 4a1557edf3 | |||
| 4c55cab9fc | |||
| 8a9eb86bac | |||
| 077c7818ec | |||
| 136db345c9 | |||
| 31b711b672 | |||
| 7aeed18720 | |||
| 7da86f27e9 | |||
| e851096b77 | |||
| 91cdebd401 | |||
| 0fbdd3b68f | |||
| 939034a481 | |||
| 4ae3092877 | |||
| db23bd0f91 | |||
| 5e0de94e9a | |||
| cdfbfcd481 | |||
| 5d49b6b75b | |||
| f9a7b7dc21 | |||
| 61b7550157 | |||
| fc7fcc8db9 | |||
| 2cdb8adb64 | |||
| a22b406f46 | |||
| cff0b43f96 | |||
| 0a2bee8a78 | |||
| 0e53af427f | |||
| 3120b5e438 | |||
| 01689fc02a | |||
| afc9a2d97c | |||
| df5d891ee7 | |||
| d7ba76f44f | |||
| 10cda2103f | |||
| 616cdbd218 | |||
| 2199a4db1c | |||
| c4b673099f | |||
| c61b01ee0c | |||
| 24f26acea4 | |||
| f4e5e0f297 | |||
| a78d9bbccf | |||
| 89ec94a72b | |||
| cf495ac494 | |||
| 0eb54ef113 | |||
| 3043543901 | |||
| 6f56cbb12e | |||
| a7542015ab | |||
| 3e20a92c80 | |||
| 93812b4a1b | |||
| 4f3a0c546f | |||
| 097978b044 | |||
| da041e5170 | |||
| 9b626fe039 | |||
| c51db4ce64 | |||
| 01b66c6197 | |||
| 2a31925ef7 | |||
| 9480b544fb | |||
| 8c989bb684 | |||
| d9dd895775 | |||
| a149858701 | |||
| 3a1105935c | |||
| c5fa5ca98b | |||
| e40e780834 | |||
| 5f23501413 | |||
| 0631221d98 | |||
| 87fc8b0468 | |||
| b6d16ef601 | |||
| 72704eb945 | |||
| 23c202e25f | |||
| 253cf2a5c7 | |||
| dfce28b881 | |||
| 013cfdadea | |||
| 71545e6d3a | |||
| 8282084f48 | |||
| 5d53028f62 | |||
| c43f364eab | |||
| 93b25e9627 | |||
| 3051687b4c | |||
| 94cca9458b | |||
| c63e58f170 | |||
| 3aa40537e9 | |||
| 495fa5512c | |||
| f561b1ce04 | |||
| 7def90322f | |||
| 75c8861de9 | |||
| 9b5de49aae | |||
| 3e5197f909 | |||
| 152ba2d7e5 | |||
| 1d4d093a88 | |||
| 955e02ce26 | |||
| b499d95390 | |||
| df36d206d3 | |||
| 9af5e19054 | |||
| 8492045273 | |||
| 49a3b15816 | |||
| f015bb7b81 | |||
| 44aa9c6fc8 | |||
| d4eebdff49 | |||
| f42572c1f8 | |||
| 356c6e346a | |||
| 22eb62afff | |||
| 7d17c87ed0 | |||
| 7c8e93a046 | |||
| 86d250079b | |||
| b2cb51a61b | |||
| 4cfe681d00 | |||
| c670a25f8b | |||
| db5ee1e91f | |||
| ca1f1f1032 | |||
| 32800f1c48 | |||
| 66544cd4b2 | |||
| 94df2f93b7 | |||
| 4c1269c62e | |||
| a94989eb06 | |||
| 0cc2df8800 | |||
| d62f28d849 | |||
| 31de055d6f | |||
| a3daed1409 | |||
| d7ccd581ae | |||
| f559367d6a | |||
| 064d24e838 | |||
| ec894fc458 | |||
| 845f802a59 | |||
| 6680a16db6 | |||
| d838a3d07a | |||
| 1e35f405fb | |||
| 9900bf6ecc | |||
| ab36e3d59a | |||
| d370760071 | |||
| 0310e60b1c | |||
| 54614e2b83 | |||
| 92032f123b | |||
| f799dfcb31 | |||
| 99698fdd06 | |||
| 4bf0b7ca67 | |||
| 685fd09a75 | |||
| 75825e7c2c | |||
| 052ec96f54 | |||
| a4ab8fa083 | |||
| 75e5a29470 | |||
| 04db67cad7 | |||
| 0550a85716 | |||
| 91d5f6cc21 | |||
| 82433d3dc0 | |||
| 663cac933f | |||
| 520ff08595 | |||
| 95e12cab07 | |||
| 52093520fd | |||
| f92e459801 | |||
| b8d08dda5a | |||
| f8453fc4fd | |||
| c5c3a57f9d | |||
| 83245c7432 | |||
| 5715bdec00 | |||
| c57253cfce | |||
| 85fa790711 | |||
| c379dd6bc3 | |||
| e42d04ad9e | |||
| f361f7d0ef | |||
| 69bd85f98f | |||
| b4cee2db25 | |||
| b16e7ebf8e | |||
| 4f9dcd4fdc | |||
| 3dc33d4238 | |||
| aa16b64225 | |||
| f93d3b9fc9 | |||
| 250103bf4e | |||
| bc6767bdf4 | |||
| 15a6b39a40 | |||
| 83352e3e29 | |||
| c8c52477c9 | |||
| 042ae30b62 | |||
| b9f3bbe950 | |||
| 2fd1416ce4 | |||
| 722c99ed04 | |||
| b59c94ad7f | |||
| 547a504f7b | |||
| 51a168c12f | |||
| 3573a42ef7 | |||
| 23d69c7c8e | |||
| 77e44a5ab5 | |||
| b892ca4791 | |||
| 4775d4f082 | |||
| 2148a68df8 | |||
| 52a8fd1b63 | |||
| 422db61d71 | |||
| 749462beec | |||
| 8726c6d50b | |||
| 6ae531e893 | |||
| dc117ffbe1 | |||
| 40e3eaaf64 | |||
| 72e4607e82 | |||
| cfdaa95bea | |||
| 2be0638602 | |||
| 6ec5a0c122 | |||
| fd1902ecd2 | |||
| ec77844b1a | |||
| 8c238ae4ff | |||
| 4c909922d4 | |||
| 8358539667 | |||
| 5c87617652 | |||
| a102a7dca9 | |||
| a2e8758965 | |||
| 5914e9317c | |||
| 094dbe7386 | |||
| 84debf31c7 | |||
| 5afacd4dec | |||
| 4221eb049f | |||
| 4971ff139f | |||
| e5a50b4b4d | |||
| 5222a47b9d | |||
| 98afd6402c | |||
| 24fdc18a47 | |||
| e5632b27b2 | |||
| 14db5d588f | |||
| dbb990c0f7 | |||
| a34bed7e11 | |||
| 7c61befcb0 | |||
| 9381c7399b | |||
| 439365977f | |||
| 5b3a7bf02e | |||
| 1be45fb2d4 | |||
| a327517cf8 | |||
| f9204ad5a0 | |||
| 5b5a7ab907 | |||
| 634bb3ad64 | |||
| 329d8d3ee1 | |||
| 24c7e845c3 | |||
| 3f01f49da3 | |||
| 6d7c28560c | |||
| 23931a5676 | |||
| b4dd9f6878 | |||
| 2903b81360 | |||
| 942cf82354 | |||
| 4dcdd1ad65 | |||
| a2a3c284a3 | |||
| 4497d5e30f | |||
| 9c5e037db6 | |||
| 2b6c7941d6 | |||
| 4e11d77258 | |||
| 9791e379e3 | |||
| b59dc7906c | |||
| 253726c433 | |||
| 06e3a75515 | |||
| 2925e1e64f | |||
| ead574ae6b | |||
| 1f4d4cd974 | |||
| 2deaf3689a |
+10
-4
@@ -10,10 +10,11 @@
|
||||
saves
|
||||
tmp
|
||||
cache
|
||||
env
|
||||
|
||||
log.txt
|
||||
/errors.txt
|
||||
/traceback.txt
|
||||
errors.txt
|
||||
traceback.txt
|
||||
|
||||
styles.txt
|
||||
|
||||
@@ -48,7 +49,12 @@ styles.txt
|
||||
/launcher/game/theme
|
||||
/launcher/game/script_version.rpy
|
||||
|
||||
dl
|
||||
/dl
|
||||
renpy/vc_version.py
|
||||
.externalToolBuilders
|
||||
rapt
|
||||
/rapt
|
||||
/evil
|
||||
/iaptest
|
||||
/pygame_sdl2
|
||||
/renios
|
||||
/steam_appid.txt
|
||||
|
||||
+24
-10
@@ -49,30 +49,44 @@ Building the modules requires you have the many dependencies installed on
|
||||
your system. On Ubuntu and Debian, these dependencies can be installed with
|
||||
the command::
|
||||
|
||||
apt-get install python-dev python-pygame libavcodec-dev libavformat-dev \
|
||||
libavresample-dev libfreetype6-dev libglew1.6-dev libsdl1.2-dev \
|
||||
libsdl-image1.2-dev libfribidi-dev libswscale-dev libesd0-dev libpulse-dev
|
||||
|
||||
Other platforms may have an equivalent command. Otherwise, you'll need to
|
||||
build `renpy-deps <https://github.com/renpy/renpy-deps>`_.
|
||||
apt-get install virtualenvwrapper python-dev libavcodec-dev libavformat-dev \
|
||||
libavresample-dev libswscale-dev libfreetype6-dev libglew1.6-dev \
|
||||
libfribidi-dev libsdl2-dev libsdl2-image-dev libsdl2-gfx-dev \
|
||||
libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-turbo8-dev
|
||||
|
||||
We strongly suggest installing the Ren'Py modules into a Python
|
||||
virtualenv. `This page <http://dabapps.com/blog/introduction-to-pip-and-virtualenv-python/>`_
|
||||
describes how to install pip and the virtualenv tool, and set up a new virtualenv.
|
||||
virtualenv. To create a new virtualenv, open a new terminal and run::
|
||||
|
||||
mkvirtualenv renpy
|
||||
|
||||
To return to this virtualenv later, run::
|
||||
|
||||
workon renpy
|
||||
|
||||
After activating the virtualenv, install cython::
|
||||
|
||||
pip install -U cython
|
||||
|
||||
Then, install pygame_sdl2 by running the following commands::
|
||||
|
||||
git clone https://www.github.com/renpy/pygame_sdl2
|
||||
pushd pygame_sdl2
|
||||
python fix_virtualenv.py $VIRTUAL_ENV
|
||||
python setup.py install
|
||||
popd
|
||||
|
||||
Next, set RENPY_DEPS_INSTALL To a \::-separated list of paths containing the
|
||||
dependencies, and RENPY_CYTHON to the name of the cython command::
|
||||
|
||||
export RENPY_DEPS_INSTALL=/usr::/usr/lib/x86_64-linux-gnu/
|
||||
export RENPY_DEPS_INSTALL="/usr::/usr/lib/x86_64-linux-gnu/"
|
||||
export RENPY_CYTHON=cython
|
||||
|
||||
Finally, change into the `modules` directory, and run::
|
||||
Finally, use setup.py in the Ren'Py ``module`` directory to compile and
|
||||
install the modules that support Ren'Py::
|
||||
|
||||
pushd module
|
||||
python setup.py install
|
||||
popd
|
||||
|
||||
Ren'Py will be installed into the activated virtualenv. It can then be run
|
||||
using the command::
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python2
|
||||
|
||||
import argparse
|
||||
import os
|
||||
@@ -7,6 +7,15 @@ import sys
|
||||
|
||||
from renpy import version_tuple #@UnresolvedImport
|
||||
|
||||
SOURCE = [
|
||||
"/home/tom/ab/renpy",
|
||||
"/home/tom/ab/android/",
|
||||
"/home/tom/ab/android/python-for-android",
|
||||
"/home/tom/ab/ripe/renios",
|
||||
"/home/tom/ab/renpy-deps",
|
||||
"/home/tom/ab/pygame_sdl2",
|
||||
]
|
||||
|
||||
version = ".".join(str(i) for i in version_tuple)
|
||||
short_version = ".".join(str(i) for i in version_tuple[:3])
|
||||
print "Version", version
|
||||
@@ -17,9 +26,21 @@ ap.add_argument("--release", action="store_true")
|
||||
ap.add_argument("--prerelease", action="store_true")
|
||||
ap.add_argument("--experimental", action="store_true")
|
||||
ap.add_argument("--no-tag", "-n", action="store_true")
|
||||
ap.add_argument("--push-tags", action="store_true")
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
if args.push_tags:
|
||||
for i in SOURCE:
|
||||
os.chdir(i)
|
||||
|
||||
if subprocess.call([ "git", "push", "--tags" ]):
|
||||
print "Tags not pushed: {}".format(os.getcwd())
|
||||
sys.exit(1)
|
||||
|
||||
print "Pushed tags."
|
||||
sys.exit(0)
|
||||
|
||||
if args.release:
|
||||
links = [ "release", "prerelease", "experimental" ]
|
||||
tag = True
|
||||
@@ -33,23 +54,28 @@ else:
|
||||
links = [ ]
|
||||
tag = False
|
||||
|
||||
if args.no_tag:
|
||||
tag = False
|
||||
|
||||
def check_dirty():
|
||||
if args.no_tag:
|
||||
return
|
||||
if tag:
|
||||
for i in SOURCE:
|
||||
os.chdir(i)
|
||||
|
||||
if subprocess.check_call([ "git", "diff", "--quiet", "HEAD" ]):
|
||||
print "Directory not checked in: {}".format(os.getcwd())
|
||||
sys.exit(1)
|
||||
if subprocess.call([ "git", "diff", "--quiet", "HEAD" ]):
|
||||
print "Directory not checked in: {}".format(os.getcwd())
|
||||
sys.exit(1)
|
||||
|
||||
os.chdir("/home/tom/ab/renpy")
|
||||
check_dirty()
|
||||
for i in SOURCE:
|
||||
|
||||
os.chdir("/home/tom/ab/renpy/android")
|
||||
check_dirty()
|
||||
os.chdir(i)
|
||||
|
||||
if i == SOURCE[0]:
|
||||
tag = version
|
||||
else:
|
||||
tag = "renpy-" + version
|
||||
|
||||
subprocess.check_call([ "git", "tag", "-a", tag, "-m", "Tagging Ren'Py + " + version + " release." ])
|
||||
|
||||
if not args.no_tag:
|
||||
subprocess.check_call([ "git", "tag", "-a", "rapt-" + version, "-m", "Tagging RAPT release." ])
|
||||
|
||||
os.chdir("/home/tom/ab/renpy/dl")
|
||||
|
||||
@@ -58,11 +84,5 @@ for i in links:
|
||||
os.unlink(i)
|
||||
os.symlink(short_version, i)
|
||||
|
||||
os.chdir("/home/tom/ab/renpy")
|
||||
|
||||
if tag and not args.no_tag:
|
||||
cmd = [ "git", "tag", "-a", version, "-m", "Ren'Py " + version ]
|
||||
subprocess.check_call(cmd)
|
||||
|
||||
os.chdir("/home/tom/ab/website")
|
||||
subprocess.check_call("./upload.sh")
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
lib\windows-i686\python.exe -OO renpy.py
|
||||
lib\windows-i686\python.exe -OO renpy.py tutorial
|
||||
pause
|
||||
|
||||
+31
-11
@@ -1,4 +1,4 @@
|
||||
#!/home/tom/bin/renpython -O
|
||||
#!/home/tom/ab/renpy/lib/linux-x86_64/python -O
|
||||
|
||||
# Builds a distribution of Ren'Py.
|
||||
|
||||
@@ -10,6 +10,9 @@ import subprocess
|
||||
import argparse
|
||||
import glob
|
||||
|
||||
if not sys.flags.optimize:
|
||||
raise Exception("Optimization disabled.")
|
||||
|
||||
ROOT = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
def copy_tutorial_file(src, dest):
|
||||
@@ -45,6 +48,7 @@ def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("version")
|
||||
ap.add_argument("--fast", action="store_true")
|
||||
ap.add_argument("--pygame", action="store", default=None)
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
@@ -56,7 +60,6 @@ def main():
|
||||
import renpy
|
||||
|
||||
match_version = ".".join(str(i) for i in renpy.version_tuple[:2]) #@UndefinedVariable
|
||||
zip_version = ".".join(str(i) for i in renpy.version_tuple[:3]) #@UndefinedVariable
|
||||
|
||||
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", "--match", match_version ])
|
||||
parts = s.strip().split("-")
|
||||
@@ -81,12 +84,12 @@ def main():
|
||||
|
||||
# Check that the versions match.
|
||||
full_version = ".".join(str(i) for i in renpy.version_tuple) #@UndefinedVariable
|
||||
if args.version != "renpy-experimental" \
|
||||
and not args.version.startswith("renpy-nightly-") \
|
||||
if "-" not in args.version \
|
||||
and not full_version.startswith(args.version):
|
||||
|
||||
raise Exception("The command-line and Ren'Py versions do not match.")
|
||||
|
||||
os.environ['RENPY_BUILD_VERSION'] = args.version
|
||||
|
||||
# The destination directory.
|
||||
destination = os.path.join("dl", args.version)
|
||||
|
||||
@@ -123,11 +126,17 @@ def main():
|
||||
|
||||
android = os.path.abspath("android")
|
||||
|
||||
rapt_build = subprocess.Popen([
|
||||
rapt_cmd = [
|
||||
os.path.join(android, "build_renpy.sh"),
|
||||
"renpy",
|
||||
ROOT,
|
||||
],
|
||||
]
|
||||
|
||||
if args.pygame:
|
||||
rapt_cmd.append(args.pygame)
|
||||
|
||||
rapt_build = subprocess.Popen(
|
||||
rapt_cmd,
|
||||
cwd = android,
|
||||
stdout=out,
|
||||
stderr=out)
|
||||
@@ -140,6 +149,9 @@ def main():
|
||||
else:
|
||||
print "RAPT build succeeded."
|
||||
|
||||
compileall.compile_dir("rapt/buildlib/", ddir="rapt/buildlib/", force=1, quiet=1)
|
||||
compileall.compile_dir("renios/buildlib/", ddir="renios/buildlib/", force=1, quiet=1)
|
||||
|
||||
if not os.path.exists(destination):
|
||||
os.makedirs(destination)
|
||||
|
||||
@@ -178,12 +190,17 @@ def main():
|
||||
os.path.join(destination, "updates.json"),
|
||||
])
|
||||
|
||||
# Package pygame_sdl2.
|
||||
if not args.fast:
|
||||
subprocess.check_call([
|
||||
"pygame_sdl2/distribute.py",
|
||||
"for-renpy-" + args.version,
|
||||
"--dest",
|
||||
os.path.abspath(destination)
|
||||
])
|
||||
|
||||
# Write 7z.exe.
|
||||
sdk = "renpy-{}-sdk".format(zip_version)
|
||||
|
||||
if args.version.startswith("renpy-nightly-"):
|
||||
sdk = args.version + "-sdk"
|
||||
sdk = "renpy-{}-sdk".format(args.version)
|
||||
|
||||
if not args.fast:
|
||||
|
||||
@@ -233,5 +250,8 @@ def main():
|
||||
|
||||
print
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
@@ -2,131 +2,160 @@
|
||||
<head>
|
||||
<title>README</title>
|
||||
<style>
|
||||
|
||||
BODY {
|
||||
background: #fff;
|
||||
color: #444;
|
||||
padding-left: 20%;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
padding-right: 20%;
|
||||
font-family: sans-serif;
|
||||
line-height: 1.6em;
|
||||
background: #fff;
|
||||
color: #444;
|
||||
padding-left: 20%;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
padding-right: 20%;
|
||||
font-family: sans-serif;
|
||||
line-height: 1.6em;
|
||||
}
|
||||
|
||||
DT {
|
||||
font-weight: bold;
|
||||
margin-top: .33em;
|
||||
font-weight: bold;
|
||||
margin-top: .33em;
|
||||
}
|
||||
|
||||
H2 {
|
||||
color: #000;
|
||||
margin-left: -2.5em;
|
||||
color: #000;
|
||||
margin-left: -2.5em;
|
||||
}
|
||||
|
||||
H3 {
|
||||
color: #000;
|
||||
margin-left: -1.5em;
|
||||
color: #000;
|
||||
margin-left: -1.5em;
|
||||
}
|
||||
|
||||
.editsection {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="renpy_help"></div>
|
||||
<h2>Basic Help</h2>
|
||||
<p>
|
||||
To advance through the game, <tt>left-click</tt> or press the <tt>space</tt>
|
||||
or <tt>enter</tt> keys. When at a menu, <tt>left-click</tt> to make
|
||||
a choice, or use the arrow keys to select a choice and <tt>enter</tt>
|
||||
to activate it.
|
||||
</p>
|
||||
|
||||
<h3>Game Menu</h3>
|
||||
<p>
|
||||
When playing a game, <tt>right-click</tt> or press the <tt>escape</tt>
|
||||
key to enter the game menu. The game menu gives the following
|
||||
choices:
|
||||
</p>
|
||||
<dl>
|
||||
<dt>Return</dt>
|
||||
<dd>Returns to the game.</dd>
|
||||
<dt>Save Game</dt>
|
||||
<dd>Allows you to save a game by clicking on a save slot.</dd>
|
||||
<dt>Load Game</dt>
|
||||
<dd>Allows you to load a game by clicking on a save slot.
|
||||
Clicking on "Auto" accesses the automatic save slots.</dd>
|
||||
<dt>Preferences</dt>
|
||||
<dd>
|
||||
Changes the game preferences (options/configuration):
|
||||
<dl>
|
||||
<dt>Display</dt>
|
||||
<dd>Switches between fullscreen and windowed mode.</dd>
|
||||
<dt>Transitions</dt>
|
||||
<dd>Controls the display of transitions between game
|
||||
screens.</dd>
|
||||
<dt>Text Speed</dt>
|
||||
<dd>Controls the rate at which text displays. The further
|
||||
to the right this slider is, the faster the text will display.
|
||||
All the way to the right causes text to be shown instantly.</dd>
|
||||
<dt>Joystick</dt>
|
||||
<dd>Lets you control the game using a joystick.</dd>
|
||||
<dt>Skip</dt>
|
||||
<dd>Chooses between skipping messages that have been
|
||||
already seen (in any play through the game), and skipping all
|
||||
messages.</dd>
|
||||
<dt>Begin Skipping</dt>
|
||||
<dd>Returns to the game, while skipping.</dd>
|
||||
<dt>After Choices</dt>
|
||||
<dd>Controls if skipping stops upon reaching a menu.</dd>
|
||||
<dt>Auto-Forward Time</dt>
|
||||
<dd>Controls automatic advance. The further to the left
|
||||
this slider is, the shorter the amount of time before the game
|
||||
advances. All the way to the right means text will never
|
||||
auto-forward.</dd>
|
||||
<dt>Music, Sound, and Voice Volume</dt>
|
||||
<dd>Controls the volume of the Music, Sound effect, and
|
||||
Voice channels, respectively. The further to the right these
|
||||
are, the louder the volume.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Main Menu</dt>
|
||||
<dd>Returns to the main menu, ending the current game.</dd>
|
||||
<dt>Help</dt>
|
||||
<dd>Shows this help screen.</dd>
|
||||
<dt>Quit</dt>
|
||||
<dd>Exits the game; the game will be closed and ended.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Key and Mouse Bindings</h3>
|
||||
<dl>
|
||||
<dt>Left-click, Enter</dt>
|
||||
<dd>Advances through the game, activates menu choices, buttons,
|
||||
and sliders.</dd>
|
||||
<dt>Space</dt>
|
||||
<dd>Advances through the game, but does not activate choices.</dd>
|
||||
<dt>Arrow Keys</dt>
|
||||
<dd>Selects menu choices, buttons, and sliders.</dd>
|
||||
<dt>Ctrl</dt>
|
||||
<dd>Causes skipping to occur while the ctrl key is held down.</dd>
|
||||
<dt>Tab</dt>
|
||||
<dd>Toggles skipping, causing it to occur until tab is pressed
|
||||
again.</dd>
|
||||
<dt>Mousewheel-Up, PageUp</dt>
|
||||
<dd>Causes rollback to occur. Rollback reverses the game back
|
||||
in time, showing prior text and even allowing menu choices to be
|
||||
changed.</dd>
|
||||
<dt>Mousewheel-Down, PageDown</dt>
|
||||
<dd>Causes rollforward to occur, canceling out a previous
|
||||
rollback.</dd>
|
||||
<dt>Right-click, Escape</dt>
|
||||
<dd>Enters the game menu. When in the game menu, returns to the
|
||||
game.</dd>
|
||||
<dt>Middle-click, H</dt>
|
||||
<dd>Hides the text window and other transient displays.</dd>
|
||||
<dt>F</dt>
|
||||
<dd>Toggles fullscreen mode</dd>
|
||||
<dt>S</dt>
|
||||
<dd>Takes a screenshot, saving it in a file named
|
||||
screenshotxxxx.png, where xxxx is a serial number.</dd>
|
||||
<dt>Alt-M, Command-H</dt>
|
||||
<dd>Hides (iconifies) the window.</dd>
|
||||
<dt>Alt-F4, Command-Q</dt>
|
||||
<dd>Quits the game.</dd>
|
||||
<dt>Delete</dt>
|
||||
<dd>When a save slot is selected, deletes that save slot.</dd>
|
||||
<dt>v</dt>
|
||||
<dd>
|
||||
Toggles self-voicing mode, which reads text to the user using an
|
||||
os-supplied speech synthesizer. For more information, please read
|
||||
the <a href="http://www.renpy.org/doc/html/self_voicing.html">self-voicing</a>
|
||||
documentation.
|
||||
</dd>
|
||||
<dt>Shift+C</dt>
|
||||
<dd>Toggles clipboard-voicing mode, which copies text to the
|
||||
clipboard so it can be read by a screen reader.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<p><a name="Basic_Help" id="Basic_Help"></a></p>
|
||||
<h2><span class="editsection">[<a href="/w/index.php?title=renpy/Help&action=edit&section=1" title="Edit section: Basic Help">edit</a>]</span> <span class="mw-headline">Basic Help</span></h2>
|
||||
<p>To advance through the game, <tt>left-click</tt> or press the <tt>space</tt> or <tt>enter</tt> keys. When at a menu, <tt>left-click</tt> to make a choice, or use the arrow keys to select a choice and <tt>enter</tt> to activate it.</p>
|
||||
<p><a name="Game_Menu" id="Game_Menu"></a></p>
|
||||
<h3><span class="editsection">[<a href="/w/index.php?title=renpy/Help&action=edit&section=2" title="Edit section: Game Menu">edit</a>]</span> <span class="mw-headline">Game Menu</span></h3>
|
||||
<p>When playing a game, <tt>right-click</tt> or press the <tt>escape</tt> key to enter the game menu. The game menu gives the following choices:</p>
|
||||
<dl>
|
||||
<dt>Return</dt>
|
||||
<dd>Returns to the game.</dd>
|
||||
<dt>Save Game</dt>
|
||||
<dd>Allows you to save a game by clicking on a save slot.</dd>
|
||||
<dt>Load Game</dt>
|
||||
<dd>Allows you to load a game by clicking on a save slot. Clicking on "Auto" accesses the automatic save slots.</dd>
|
||||
<dt>Preferences</dt>
|
||||
<dd>Changes the game preferences (options/configuration):
|
||||
<dl>
|
||||
<dt>Display</dt>
|
||||
<dd>Switches between fullscreen and windowed mode.</dd>
|
||||
<dt>Transitions</dt>
|
||||
<dd>Controls the display of transitions between game screens.</dd>
|
||||
<dt>Text Speed</dt>
|
||||
<dd>Controls the rate at which text displays. The further to the right this slider is, the faster the text will display. All the way to the right causes text to be shown instantly.</dd>
|
||||
<dt>Joystick</dt>
|
||||
<dd>Lets you control the game using a joystick.</dd>
|
||||
<dt>Skip</dt>
|
||||
<dd>Chooses between skipping messages that have been already seen (in any play through the game), and skipping all messages.</dd>
|
||||
<dt>Begin Skipping</dt>
|
||||
<dd>Returns to the game, while skipping.</dd>
|
||||
<dt>After Choices</dt>
|
||||
<dd>Controls if skipping stops upon reaching a menu.</dd>
|
||||
<dt>Auto-Forward Time</dt>
|
||||
<dd>Controls automatic advance. The further to the left this slider is, the shorter the amount of time before the game advances. All the way to the right means text will never auto-forward.</dd>
|
||||
<dt>Music, Sound, and Voice Volume</dt>
|
||||
<dd>Controls the volume of the Music, Sound effect, and Voice channels, respectively. The further to the right these are, the louder the volume.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Main Menu</dt>
|
||||
<dd>Returns to the main menu, ending the current game.</dd>
|
||||
<dt>Help</dt>
|
||||
<dd>Shows this help screen.</dd>
|
||||
<dt>Quit</dt>
|
||||
<dd>Exits the game; the game will be closed and ended.</dd>
|
||||
</dl>
|
||||
<p><a name="Key_and_Mouse_Bindings" id="Key_and_Mouse_Bindings"></a></p>
|
||||
<h3><span class="editsection">[<a href="/w/index.php?title=renpy/Help&action=edit&section=3" title="Edit section: Key and Mouse Bindings">edit</a>]</span> <span class="mw-headline">Key and Mouse Bindings</span></h3>
|
||||
<dl>
|
||||
<dt>Left-click, Enter</dt>
|
||||
<dd>Advances through the game, activates menu choices, buttons, and sliders.</dd>
|
||||
<dt>Space</dt>
|
||||
<dd>Advances through the game, but does not activate choices.</dd>
|
||||
<dt>Arrow Keys</dt>
|
||||
<dd>Selects menu choices, buttons, and sliders.</dd>
|
||||
<dt>Ctrl</dt>
|
||||
<dd>Causes skipping to occur while the ctrl key is held down.</dd>
|
||||
<dt>Tab</dt>
|
||||
<dd>Toggles skipping, causing it to occur until tab is pressed again.</dd>
|
||||
<dt>Mousewheel-Up, PageUp</dt>
|
||||
<dd>Causes rollback to occur. Rollback reverses the game back in time, showing prior text and even allowing menu choices to be changed.</dd>
|
||||
<dt>Mousewheel-Down, PageDown</dt>
|
||||
<dd>Causes rollforward to occur, cancelling out a previous rollback.</dd>
|
||||
<dt>Right-click, Escape</dt>
|
||||
<dd>Enters the game menu. When in the game menu, returns to the game.</dd>
|
||||
<dt>Middle-click, H</dt>
|
||||
<dd>Hides the text window and other transient displays.</dd>
|
||||
<dt>F</dt>
|
||||
<dd>Toggles fullscreen mode</dd>
|
||||
<dt>S</dt>
|
||||
<dd>Takes a screenshot, saving it in a file named screenshotxxxx.png, where xxxx is a serial number.</dd>
|
||||
<dt>Alt-M, Command-H</dt>
|
||||
<dd>Hides (iconifies) the window.</dd>
|
||||
<dt>Alt-F4, Command-Q</dt>
|
||||
<dd>Quits the game.</dd>
|
||||
<dt>Delete</dt>
|
||||
<dd>When a save slot is selected, deletes that save slot.</dd>
|
||||
<dt>v</dt>
|
||||
<dd>Toggles self-voicing mode, which reads text to the user using an os-supplied
|
||||
speech synthesizer. For more information, please read the <a href="http://www.renpy.org/dev-doc/html/self_voicing.html">self-voicing</a>
|
||||
documentation.</dd>
|
||||
</dl>
|
||||
<p><a name="Legal_Notice" id="Legal_Notice"></a></p>
|
||||
<h2><span class="editsection">[<a href="/w/index.php?title=renpy/Help&action=edit&section=4" title="Edit section: Legal Notice">edit</a>]</span> <span class="mw-headline">Legal Notice</span></h2>
|
||||
<p>This game uses source code from a number of open source projects. For a list, and a location where the source code can be downloaded from, please view the LICENSE.txt file in the renpy directory, or visit <a href="http://www.renpy.org/wiki/renpy/License" class="external free" title="http://www.renpy.org/wiki/renpy/License" rel="nofollow">http://www.renpy.org/wiki/renpy/License</a> .</p>
|
||||
|
||||
|
||||
<h2>Legal Notice</h2>
|
||||
<p>
|
||||
This program contains free software licensed under a number of
|
||||
licenses, including the GNU Lesser Public License. A complete list
|
||||
of software is available at <a
|
||||
href="http://www.renpy.org/doc/html/license.html"
|
||||
>http://www.renpy.org/doc/html/license.html</a>.
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
|
||||
+79
-207
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -43,6 +43,7 @@ init python:
|
||||
PLAY_KEYS_TEXT = _("Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details.")
|
||||
BUILD_TEXT = _("Builds the Android package.")
|
||||
BUILD_AND_INSTALL_TEXT = _("Builds the Android package, and installs it on an Android device connected to your computer.")
|
||||
BUILD_INSTALL_AND_LAUNCH_TEXT = _("Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device.")
|
||||
|
||||
CONNECT_TEXT = _("Connects to an Android device running ADB in TCP/IP mode.")
|
||||
DISCONNECT_TEXT = _("Disconnects from an Android device running ADB in TCP/IP mode.")
|
||||
@@ -52,6 +53,7 @@ init python:
|
||||
import re
|
||||
import os
|
||||
import json
|
||||
import glob
|
||||
|
||||
def find_rapt():
|
||||
|
||||
@@ -66,7 +68,6 @@ init python:
|
||||
sys.path.insert(0, os.path.join(RAPT_PATH, "buildlib"))
|
||||
else:
|
||||
RAPT_PATH = None
|
||||
RAPT_PATH is None
|
||||
|
||||
find_rapt()
|
||||
|
||||
@@ -79,6 +80,8 @@ init python:
|
||||
import rapt.install_sdk
|
||||
import rapt.plat
|
||||
import rapt.interface
|
||||
|
||||
rapt.plat.renpy = True
|
||||
else:
|
||||
rapt = None
|
||||
|
||||
@@ -131,184 +134,6 @@ init python:
|
||||
else:
|
||||
return None
|
||||
|
||||
class AndroidInterface(object):
|
||||
|
||||
def __init__(self):
|
||||
self.process = None
|
||||
self.filename = project.current.temp_filename("android.txt")
|
||||
|
||||
self.info_msg = ""
|
||||
|
||||
with open(self.filename, "w"):
|
||||
pass
|
||||
|
||||
def log(self, msg):
|
||||
with open(self.filename, "a") as f:
|
||||
f.write("\n")
|
||||
f.write(msg)
|
||||
f.write("\n")
|
||||
|
||||
def info(self, prompt):
|
||||
self.info_msg = prompt
|
||||
interface.processing(prompt, pause=False)
|
||||
self.log(prompt)
|
||||
|
||||
def yesno(self, prompt, submessage=None):
|
||||
return interface.yesno(prompt, submessage=submessage)
|
||||
|
||||
def yesno_choice(self, prompt, default=None):
|
||||
choices = [ (True, "Yes"), (False, "No") ]
|
||||
return interface.choice(prompt, choices, default)
|
||||
|
||||
def terms(self, url, prompt):
|
||||
submessage = _("{a=%s}%s{/a}") % (url, url)
|
||||
|
||||
if not interface.yesno(prompt, submessage=submessage):
|
||||
self.fail("You must accept the terms and conditions to proceed.", edit=False)
|
||||
|
||||
|
||||
def input(self, prompt, empty=None):
|
||||
|
||||
if empty is None:
|
||||
empty = ''
|
||||
|
||||
while True:
|
||||
rv = interface.input(_("QUESTION"), prompt, default=empty, cancel=Jump("android"))
|
||||
|
||||
rv = rv.strip()
|
||||
|
||||
if rv:
|
||||
return rv
|
||||
|
||||
def choice(self, prompt, choices, default):
|
||||
return interface.choice(prompt, choices, default, cancel=Jump("android"))
|
||||
|
||||
def fail(self, prompt, edit=True):
|
||||
self.log(prompt)
|
||||
prompt = re.sub(r'(http://\S+)', r'{a=\1}\1{/a}', prompt)
|
||||
|
||||
# Open android.txt in the editor.
|
||||
if edit:
|
||||
editor.EditAbsolute(self.filename)()
|
||||
|
||||
interface.error(prompt, label="android")
|
||||
|
||||
def success(self, prompt):
|
||||
self.log(prompt)
|
||||
interface.info(prompt, pause=False)
|
||||
|
||||
def final_success(self, prompt):
|
||||
self.log(prompt)
|
||||
interface.info(prompt, label="android")
|
||||
|
||||
def run_yes_thread(self):
|
||||
import time
|
||||
|
||||
try:
|
||||
while self.run_yes:
|
||||
self.process.stdin.write('y\n')
|
||||
self.process.stdin.flush()
|
||||
time.sleep(.2)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def call(self, cmd, cancel=False, use_path=False, yes=False):
|
||||
|
||||
print
|
||||
print " ".join(cmd)
|
||||
|
||||
self.cmd = cmd
|
||||
|
||||
f = open(self.filename, "a")
|
||||
|
||||
f.write("\n\n\n")
|
||||
|
||||
if cancel:
|
||||
cancel_action = self.cancel
|
||||
else:
|
||||
cancel_action = None
|
||||
|
||||
startupinfo = None
|
||||
if renpy.windows:
|
||||
startupinfo = subprocess.STARTUPINFO()
|
||||
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
||||
|
||||
self.yes_thread = None
|
||||
|
||||
try:
|
||||
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action)
|
||||
|
||||
kwargs = { }
|
||||
if yes:
|
||||
kwargs["stdin"] = subprocess.PIPE
|
||||
|
||||
try:
|
||||
self.process = subprocess.Popen(cmd, cwd=RAPT_PATH, stdout=f, stderr=f, startupinfo=startupinfo, **kwargs)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc(file=f)
|
||||
raise
|
||||
|
||||
if yes:
|
||||
import threading
|
||||
self.run_yes = True
|
||||
self.yes_thread = threading.Thread(target=self.run_yes_thread)
|
||||
self.yes_thread.daemon = True
|
||||
self.yes_thread.start()
|
||||
|
||||
renpy.call_screen("android_process", interface=self)
|
||||
finally:
|
||||
f.close()
|
||||
interface.hide_screen()
|
||||
|
||||
if yes and self.yes_thread:
|
||||
self.run_yes = False
|
||||
self.yes_thread.join()
|
||||
|
||||
self.process = None
|
||||
self.yes_thread = None
|
||||
|
||||
def check_process(self):
|
||||
rv = self.process.poll()
|
||||
|
||||
if rv is not None:
|
||||
if rv:
|
||||
raise subprocess.CalledProcessError(rv, self.cmd)
|
||||
else:
|
||||
return True
|
||||
|
||||
def download(self, url, dest):
|
||||
try:
|
||||
d = Downloader(url, dest)
|
||||
cancel_action = [ d.cancel, Jump("android") ]
|
||||
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action, bar_value=DownloaderValue(d))
|
||||
ui.timer(.1, action=d.check, repeat=True)
|
||||
ui.interact()
|
||||
finally:
|
||||
interface.hide_screen()
|
||||
|
||||
def background(self, f):
|
||||
try:
|
||||
t = threading.Thread(target=f)
|
||||
t.start()
|
||||
|
||||
interface.processing(self.info_msg, show_screen=True)
|
||||
|
||||
while t.is_alive():
|
||||
renpy.pause(0)
|
||||
t.join(0.25)
|
||||
|
||||
finally:
|
||||
interface.hide_screen()
|
||||
|
||||
|
||||
def cancel(self):
|
||||
if self.process:
|
||||
self.process.terminate()
|
||||
|
||||
renpy.jump("android")
|
||||
|
||||
|
||||
class AndroidBuild(Action):
|
||||
"""
|
||||
@@ -321,22 +146,6 @@ init python:
|
||||
def __call__(self):
|
||||
renpy.jump(self.label)
|
||||
|
||||
class LaunchEmulator(Action):
|
||||
|
||||
def __init__(self, emulator, variants):
|
||||
self.emulator = emulator
|
||||
self.variants = variants
|
||||
|
||||
def __call__(self):
|
||||
|
||||
env = {
|
||||
"RENPY_EMULATOR" : self.emulator,
|
||||
"RENPY_VARIANT" : self.variants,
|
||||
}
|
||||
|
||||
p = project.current
|
||||
p.launch(env=env)
|
||||
|
||||
def update_android_json(p, gui):
|
||||
"""
|
||||
Updates .android.json to include the google play information.
|
||||
@@ -372,7 +181,7 @@ init python:
|
||||
with open(filename, "w") as f:
|
||||
json.dump(android_json, f)
|
||||
|
||||
def android_build(command, p=None, gui=True):
|
||||
def android_build(command, p=None, gui=True, launch=False, destination=None, opendir=False):
|
||||
"""
|
||||
This actually builds the package.
|
||||
"""
|
||||
@@ -389,7 +198,7 @@ init python:
|
||||
|
||||
if gui:
|
||||
reporter = distribute.GuiReporter()
|
||||
rapt_interface = AndroidInterface()
|
||||
rapt_interface = MobileInterface("android")
|
||||
else:
|
||||
reporter = distribute.TextReporter()
|
||||
rapt_interface = rapt.interface.Interface()
|
||||
@@ -403,8 +212,57 @@ init python:
|
||||
report_success=False,
|
||||
)
|
||||
|
||||
def finished(files, destination=destination):
|
||||
|
||||
source_dir = rapt.plat.path("bin")
|
||||
|
||||
try:
|
||||
|
||||
destination_dir = destination
|
||||
|
||||
# Use default destination if not configured
|
||||
if gui and destination is None:
|
||||
build = p.dump['build']
|
||||
destination = build["destination"]
|
||||
|
||||
if destination != "-dists":
|
||||
parent = os.path.dirname(p.path)
|
||||
destination_dir = os.path.join(parent, destination)
|
||||
|
||||
except:
|
||||
destination_dir = None
|
||||
|
||||
dir_to_open = source_dir
|
||||
|
||||
if destination_dir is not None:
|
||||
|
||||
reporter.info(_("Copying Android files to distributions directory."))
|
||||
|
||||
try:
|
||||
os.makedirs(destination_dir)
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
|
||||
for i in files:
|
||||
shutil.copy(i, renpy.fsencode(destination_dir))
|
||||
|
||||
dir_to_open = destination_dir
|
||||
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
pass
|
||||
|
||||
if opendir:
|
||||
store.OpenDirectory(dir_to_open)()
|
||||
|
||||
|
||||
with interface.nolinks():
|
||||
rapt.build.build(rapt_interface, dist, command)
|
||||
rapt.build.build(rapt_interface, dist, command, launch=launch, finished=finished)
|
||||
|
||||
|
||||
|
||||
# The android support can stick unicode into os.environ. Fix that.
|
||||
init 100 python:
|
||||
@@ -468,7 +326,8 @@ screen android:
|
||||
|
||||
frame style "l_indent":
|
||||
|
||||
has vbox
|
||||
has hbox:
|
||||
spacing 15
|
||||
|
||||
textbutton _("Phone"):
|
||||
action LaunchEmulator("touch", "small phone touch android")
|
||||
@@ -478,7 +337,7 @@ screen android:
|
||||
action LaunchEmulator("touch", "medium tablet touch android")
|
||||
hovered tt.Action(TABLET_TEXT)
|
||||
|
||||
textbutton _("Television / OUYA"):
|
||||
textbutton _("Television"):
|
||||
action LaunchEmulator("tv", "small tv ouya android")
|
||||
hovered tt.Action(OUYA_TEXT)
|
||||
|
||||
@@ -514,6 +373,10 @@ screen android:
|
||||
action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_and_install"))
|
||||
hovered tt.Action(BUILD_AND_INSTALL_TEXT)
|
||||
|
||||
textbutton _("Build, Install & Launch"):
|
||||
action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_install_and_launch"))
|
||||
hovered tt.Action(BUILD_INSTALL_AND_LAUNCH_TEXT)
|
||||
|
||||
add SPACER
|
||||
add SEPARATOR2
|
||||
|
||||
@@ -576,7 +439,7 @@ label android_installsdk:
|
||||
|
||||
python:
|
||||
with interface.nolinks():
|
||||
rapt.install_sdk.install_sdk(AndroidInterface())
|
||||
rapt.install_sdk.install_sdk(MobileInterface("android"))
|
||||
|
||||
jump android
|
||||
|
||||
@@ -584,14 +447,14 @@ label android_installsdk:
|
||||
label android_configure:
|
||||
|
||||
python:
|
||||
rapt.configure.configure(AndroidInterface(), project.current.path)
|
||||
rapt.configure.configure(MobileInterface("android", edit=False), project.current.path)
|
||||
|
||||
jump android
|
||||
|
||||
|
||||
label android_build:
|
||||
|
||||
$ android_build([ 'release' ])
|
||||
$ android_build([ 'release' ], opendir=True)
|
||||
|
||||
jump android
|
||||
|
||||
@@ -602,6 +465,13 @@ label android_build_and_install:
|
||||
|
||||
jump android
|
||||
|
||||
label android_build_install_and_launch:
|
||||
|
||||
$ android_build([ 'release', 'install' ], launch=True)
|
||||
|
||||
jump android
|
||||
|
||||
|
||||
label android_connect:
|
||||
|
||||
python hide:
|
||||
@@ -641,7 +511,7 @@ label android_connect:
|
||||
|
||||
persistent.connect_address = address
|
||||
|
||||
rapt_interface = AndroidInterface()
|
||||
rapt_interface = MobileInterface("android")
|
||||
rapt.build.connect(rapt_interface, address)
|
||||
|
||||
jump android
|
||||
@@ -650,7 +520,7 @@ label android_disconnect:
|
||||
|
||||
python hide:
|
||||
|
||||
rapt_interface = AndroidInterface()
|
||||
rapt_interface = MobileInterface("android")
|
||||
rapt.build.disconnect(rapt_interface)
|
||||
|
||||
jump android
|
||||
@@ -661,12 +531,14 @@ init python:
|
||||
ap = renpy.arguments.ArgumentParser()
|
||||
ap.add_argument("project", help="The path to the project directory.")
|
||||
ap.add_argument("command", help="Commands to pass to ant. (Try 'release' 'install'.)", nargs='+')
|
||||
ap.add_argument("--launch", action="store_true", help="Launches the app after build and install compete.")
|
||||
ap.add_argument("--destination", "--dest", default=None, action="store", help="The directory where the packaged files should be placed.")
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
p = project.Project(args.project)
|
||||
|
||||
android_build(args.command, p=p, gui=False)
|
||||
android_build(args.command, p=p, gui=False, launch=args.launch, destination=args.destination)
|
||||
|
||||
return False
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
# Copyright 2004-2015 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.
|
||||
|
||||
init python:
|
||||
|
||||
|
||||
def choose_directory(path):
|
||||
"""
|
||||
Pops up a directory chooser.
|
||||
|
||||
`path`
|
||||
The directory that is selected by default. If None, config.renpy_base
|
||||
is selected.
|
||||
|
||||
Returns a (path, is_default) tuple, where path is the chosen directory,
|
||||
and is_default is true if and only if it was chosen by default mechanism
|
||||
rather than user choice.
|
||||
"""
|
||||
|
||||
if path:
|
||||
default_path = path
|
||||
else:
|
||||
try:
|
||||
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
|
||||
except:
|
||||
default_path = os.path.abspath(config.renpy_base)
|
||||
|
||||
if EasyDialogs:
|
||||
|
||||
choice = EasyDialogs.AskFolder(defaultLocation=default_path, wanted=unicode)
|
||||
|
||||
if choice is not None:
|
||||
path = choice
|
||||
else:
|
||||
path = None
|
||||
|
||||
else:
|
||||
|
||||
try:
|
||||
|
||||
cmd = [ "/usr/bin/python", os.path.join(config.gamedir, "tkaskdir.py"), renpy.fsencode(default_path) ]
|
||||
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||
choice = p.stdout.read()
|
||||
code = p.wait()
|
||||
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
code = 0
|
||||
choice = ""
|
||||
path = None
|
||||
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."), label=None)
|
||||
|
||||
if code:
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."), label=None)
|
||||
|
||||
elif choice:
|
||||
path = choice.decode("utf-8")
|
||||
|
||||
is_default = False
|
||||
|
||||
if path is None:
|
||||
path = default_path
|
||||
is_default = True
|
||||
|
||||
path = renpy.fsdecode(path)
|
||||
|
||||
if not os.path.isdir(path):
|
||||
path = os.path.abspath(config.renpy_base)
|
||||
is_default = True
|
||||
|
||||
return path, is_default
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -399,13 +399,13 @@ init python in distribute:
|
||||
# Add Python (with the same name as our executables)
|
||||
self.add_python()
|
||||
|
||||
# Build the mac app.
|
||||
# Build the mac app and windows exes.
|
||||
self.add_mac_files()
|
||||
self.add_windows_files()
|
||||
|
||||
# Add generated/special files.
|
||||
if not build['renpy']:
|
||||
self.add_renpy_files()
|
||||
self.add_windows_files()
|
||||
|
||||
# Assign the x-bit as necessary.
|
||||
self.mark_executable()
|
||||
@@ -630,6 +630,9 @@ init python in distribute:
|
||||
],
|
||||
)
|
||||
|
||||
if self.build.get('allow_integrated_gpu', False):
|
||||
plist["NSSupportsAutomaticGraphicsSwitching"] = True
|
||||
|
||||
rv = self.temp_filename("Info.plist")
|
||||
plistlib.writePlist(plist, rv)
|
||||
return rv
|
||||
@@ -663,10 +666,10 @@ init python in distribute:
|
||||
os.path.join(config.renpy_base, "lib/darwin-x86_64/pythonw"),
|
||||
True)
|
||||
|
||||
self.add_file(
|
||||
windows,
|
||||
"lib/windows-i686/" + self.executable_name + ".exe",
|
||||
os.path.join(config.renpy_base, "lib/windows-i686/pythonw.exe"))
|
||||
# self.add_file(
|
||||
# windows,
|
||||
# "lib/windows-i686/" + self.executable_name + ".exe",
|
||||
# os.path.join(config.renpy_base, "lib/windows-i686/renpy.exe"))
|
||||
|
||||
def add_mac_files(self):
|
||||
"""
|
||||
@@ -700,19 +703,31 @@ init python in distribute:
|
||||
Adds windows-specific files.
|
||||
"""
|
||||
|
||||
if self.build['renpy']:
|
||||
windows = 'binary'
|
||||
else:
|
||||
windows = 'windows'
|
||||
|
||||
icon_fn = os.path.join(self.project.path, "icon.ico")
|
||||
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):
|
||||
exe_fn = self.temp_filename("renpy.exe")
|
||||
main_fn = self.temp_filename("main.exe")
|
||||
|
||||
with open(exe_fn, "wb") as f:
|
||||
f.write(change_icons(old_exe_fn, icon_fn))
|
||||
|
||||
with open(main_fn, "wb") as f:
|
||||
f.write(change_icons(old_main_fn, icon_fn))
|
||||
|
||||
else:
|
||||
exe_fn = old_exe_fn
|
||||
main_fn = old_main_fn
|
||||
|
||||
self.add_file("windows", "renpy.exe", exe_fn)
|
||||
self.add_file(windows, self.exe, exe_fn)
|
||||
self.add_file(windows, "lib/windows-i686/" + self.exe, main_fn)
|
||||
|
||||
def mark_executable(self):
|
||||
"""
|
||||
@@ -737,9 +752,7 @@ init python in distribute:
|
||||
parts = fn.split('/')
|
||||
p = parts[0]
|
||||
|
||||
if p == "renpy.exe":
|
||||
p = self.exe
|
||||
elif p == "renpy.sh":
|
||||
if p == "renpy.sh":
|
||||
p = self.sh
|
||||
elif p == "renpy.py":
|
||||
p = self.py
|
||||
@@ -866,7 +879,7 @@ init python in distribute:
|
||||
if not data:
|
||||
break
|
||||
|
||||
sums.write(struct.pack("I", zlib.adler32(data) & 0xffffffff))
|
||||
sums.write(struct.pack("<I", zlib.adler32(data) & 0xffffffff))
|
||||
|
||||
if self.include_update and not self.build_update and not dlc:
|
||||
os.unlink(update_fn)
|
||||
@@ -888,12 +901,15 @@ init python in distribute:
|
||||
with open(fn, "rb") as f:
|
||||
digest = hashlib.sha256(f.read()).hexdigest()
|
||||
|
||||
sums_size = os.path.getsize(self.destination + "/" + self.base_name + "-" + variant + ".sums")
|
||||
|
||||
index[variant] = {
|
||||
"version" : self.update_version,
|
||||
"pretty_version" : self.pretty_version,
|
||||
"digest" : digest,
|
||||
"zsync_url" : self.base_name + "-" + variant + ".zsync",
|
||||
"sums_url" : self.base_name + "-" + variant + ".sums",
|
||||
"sums_size" : sums_size,
|
||||
"json_url" : self.base_name + "-" + variant + ".update.json",
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -191,6 +191,7 @@ screen build_distributions:
|
||||
has vbox
|
||||
|
||||
textbutton _("Edit options.rpy") action editor.Edit("game/options.rpy", check=True)
|
||||
textbutton _("Add from clauses to calls, once") action Jump("add_from")
|
||||
textbutton _("Refresh") action Jump("build_distributions")
|
||||
|
||||
|
||||
@@ -219,14 +220,44 @@ screen build_distributions:
|
||||
$ description = pkg["description"]
|
||||
textbutton "[description!q]" action PackageToggle(pkg["name"]) style "l_checkbox"
|
||||
|
||||
add SPACER
|
||||
add SPACER
|
||||
add HALF_SPACER
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Options:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
if project.current.dump["build"]["include_update"]:
|
||||
textbutton _("Build Updates") action DataToggle("build_update") style "l_checkbox"
|
||||
|
||||
textbutton _("Add from clauses to calls") action DataToggle("add_from") style "l_checkbox"
|
||||
|
||||
|
||||
textbutton _("Back") action Jump("front_page") style "l_left_button"
|
||||
textbutton _("Build") action Jump("distribute") style "l_right_button"
|
||||
textbutton _("Build") action Jump("start_distribute") style "l_right_button"
|
||||
|
||||
label add_from_common:
|
||||
python:
|
||||
interface.processing(_("Adding from clauses to call statements that do not have them."))
|
||||
project.current.launch([ "add_from" ], wait=True)
|
||||
|
||||
return
|
||||
|
||||
label add_from:
|
||||
call add_from_common
|
||||
jump build_distributions
|
||||
|
||||
|
||||
label start_distribute:
|
||||
if project.current.data["add_from"]:
|
||||
call add_from_common
|
||||
|
||||
jump distribute
|
||||
|
||||
label build_update_dump:
|
||||
python:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -195,20 +195,21 @@ screen front_page_project:
|
||||
|
||||
textbutton _("game") action OpenDirectory("game")
|
||||
textbutton _("base") action OpenDirectory(".")
|
||||
# textbutton _("images") action OpenDirectory("game/images") style "l_list"
|
||||
textbutton _("images") action OpenDirectory("game/images")
|
||||
# textbutton _("save") action None style "l_list"
|
||||
|
||||
vbox:
|
||||
if persistent.show_edit_funcs:
|
||||
|
||||
label _("Edit File") style "l_label_small"
|
||||
label _("Edit File") style "l_label_small"
|
||||
|
||||
frame style "l_indent":
|
||||
has vbox
|
||||
frame style "l_indent":
|
||||
has vbox
|
||||
|
||||
textbutton "script.rpy" action editor.Edit("game/script.rpy", check=True)
|
||||
textbutton "options.rpy" action editor.Edit("game/options.rpy", check=True)
|
||||
textbutton "screens.rpy" action editor.Edit("game/screens.rpy", check=True)
|
||||
textbutton _("All script files") action editor.EditAll()
|
||||
textbutton "script.rpy" action editor.Edit("game/script.rpy", check=True)
|
||||
textbutton "options.rpy" action editor.Edit("game/options.rpy", check=True)
|
||||
textbutton "screens.rpy" action editor.Edit("game/screens.rpy", check=True)
|
||||
textbutton _("All script files") action editor.EditAll()
|
||||
|
||||
add SPACER
|
||||
add SEPARATOR
|
||||
@@ -242,6 +243,7 @@ screen front_page_project:
|
||||
textbutton _("Build Distributions") action Jump("build_distributions")
|
||||
|
||||
textbutton _("Android") action Jump("android")
|
||||
textbutton _("iOS") action Jump("ios")
|
||||
textbutton _("Generate Translations") action Jump("translate")
|
||||
textbutton _("Extract Dialogue") action Jump("extract_dialogue")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -203,6 +203,7 @@ screen common:
|
||||
|
||||
if continue_:
|
||||
textbutton _("Continue") action continue_ style "l_right_button"
|
||||
key "input_enter" action continue_
|
||||
|
||||
|
||||
screen launcher_input:
|
||||
|
||||
@@ -0,0 +1,363 @@
|
||||
# Copyright 2004-2015 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.
|
||||
|
||||
init python:
|
||||
IOS_NO_RENIOS = 0
|
||||
IOS_NO_DIRECTORY = 1
|
||||
IOS_NO_PROJECT = 2
|
||||
IOS_OK = 3
|
||||
|
||||
IOS_NO_RENIOS_TEXT = _("To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
|
||||
IOS_NO_DIRECTORY_TEXT = _("The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it.")
|
||||
IOS_NO_PROJECT_TEXT = _("There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one.")
|
||||
IOS_OK_TEXT = _("An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it.")
|
||||
|
||||
IPHONE_TEXT = _("Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down.")
|
||||
IPAD_TEXT = _("Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down.")
|
||||
|
||||
IOS_SELECT_DIRECTORY_TEXT = _("Selects the directory where Xcode projects will be placed.")
|
||||
IOS_CREATE_PROJECT_TEXT = _("Creates an Xcode project corresponding to the current Ren'Py project.")
|
||||
IOS_UPDATE_PROJECT_TEXT = _("Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes.")
|
||||
IOS_XCODE_TEXT = _("Opens the Xcode project in Xcode.")
|
||||
|
||||
IOS_OPEN_DIRECTORY_TEXT = _("Opens the directory containing Xcode projects.")
|
||||
|
||||
def find_renios():
|
||||
|
||||
global RENIOS_PATH
|
||||
|
||||
candidates = [ ]
|
||||
|
||||
RENIOS_PATH = os.path.join(config.renpy_base, "renios")
|
||||
|
||||
if os.path.isdir(RENIOS_PATH):
|
||||
import sys
|
||||
sys.path.insert(0, os.path.join(RENIOS_PATH, "buildlib"))
|
||||
else:
|
||||
RENIOS_PATH = None
|
||||
|
||||
find_renios()
|
||||
|
||||
if RENIOS_PATH:
|
||||
import renios.create
|
||||
|
||||
def IOSState():
|
||||
if not RENIOS_PATH:
|
||||
return IOS_NO_RENIOS
|
||||
elif not persistent.xcode_projects_directory:
|
||||
return IOS_NO_DIRECTORY
|
||||
elif not os.path.exists(xcode_project()):
|
||||
return IOS_NO_PROJECT
|
||||
else:
|
||||
return IOS_OK
|
||||
|
||||
def IOSStateText(state):
|
||||
if state == IOS_NO_RENIOS:
|
||||
return IOS_NO_RENIOS_TEXT
|
||||
elif state == IOS_NO_DIRECTORY:
|
||||
return IOS_NO_DIRECTORY_TEXT
|
||||
elif state == IOS_NO_PROJECT:
|
||||
return IOS_NO_PROJECT_TEXT
|
||||
else:
|
||||
return IOS_OK_TEXT
|
||||
|
||||
def IOSIfState(state, needed, action):
|
||||
"""
|
||||
If `state` is `needed` or better, `action` is returned. Otherwise,
|
||||
returns None, disabling the button.
|
||||
"""
|
||||
|
||||
if state >= needed:
|
||||
return action
|
||||
else:
|
||||
return None
|
||||
|
||||
xcode_name_cache = { }
|
||||
|
||||
def xcode_name(s):
|
||||
"""
|
||||
Returns a version of `s` that's safe to use in Xcode.
|
||||
"""
|
||||
|
||||
if s in xcode_name_cache:
|
||||
return xcode_name_cache[s]
|
||||
|
||||
s = re.sub(r'[^\w\-\.]', '', s)
|
||||
xcode_name_cache[s] = s
|
||||
return s
|
||||
|
||||
def xcode_project(p=None):
|
||||
"""
|
||||
Return the path to the Xcode project corresponding to `p`, or the current
|
||||
project if `p` is None
|
||||
"""
|
||||
|
||||
if p is None:
|
||||
p = project.current
|
||||
|
||||
if persistent.xcode_projects_directory is None:
|
||||
raise Exception("The Xcode projects directory has not been set.")
|
||||
|
||||
return os.path.join(persistent.xcode_projects_directory, xcode_name(p.name))
|
||||
|
||||
def ios_create(p=None, gui=True):
|
||||
|
||||
dest = xcode_project(p)
|
||||
|
||||
if os.path.exists(dest):
|
||||
interface.yesno(_("The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"), no=Jump("ios"))
|
||||
|
||||
i = 0
|
||||
while True:
|
||||
i += 1
|
||||
backup = dest + "." + str(i)
|
||||
if not os.path.exists(backup):
|
||||
break
|
||||
|
||||
os.rename(dest, backup)
|
||||
|
||||
iface = MobileInterface("ios")
|
||||
renios.create.create_project(iface, dest)
|
||||
|
||||
ios_populate(p, gui=gui)
|
||||
|
||||
def ios_populate(p=None, gui=True):
|
||||
"""
|
||||
This actually builds the package.
|
||||
"""
|
||||
|
||||
import shutil
|
||||
|
||||
if p is None:
|
||||
p = project.current
|
||||
|
||||
dist = os.path.join(xcode_project(p), "base")
|
||||
|
||||
if os.path.exists(dist):
|
||||
shutil.rmtree(dist)
|
||||
|
||||
if gui:
|
||||
reporter = distribute.GuiReporter()
|
||||
else:
|
||||
reporter = distribute.TextReporter()
|
||||
|
||||
distribute.Distributor(p,
|
||||
reporter=reporter,
|
||||
packages=[ 'ios' ],
|
||||
build_update=False,
|
||||
noarchive=True,
|
||||
packagedest=dist,
|
||||
report_success=False,
|
||||
)
|
||||
|
||||
for fn in os.listdir(dist):
|
||||
if fn.endswith(".py"):
|
||||
os.rename(
|
||||
os.path.join(dist, fn),
|
||||
os.path.join(dist, "main.py"),
|
||||
)
|
||||
|
||||
break
|
||||
|
||||
def launch_xcode():
|
||||
dist = xcode_project(None)
|
||||
base = os.path.basename(dist)
|
||||
xcodeproj = "{}/{}.xcodeproj".format(dist, base)
|
||||
|
||||
subprocess.call([ 'open', renpy.fsencode(xcodeproj) ])
|
||||
|
||||
screen ios:
|
||||
|
||||
default tt = Tooltip(None)
|
||||
$ state = IOSState()
|
||||
|
||||
frame:
|
||||
style_group "l"
|
||||
style "l_root"
|
||||
|
||||
window:
|
||||
|
||||
has vbox
|
||||
|
||||
label _("iOS: [project.current.name!q]")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
hbox:
|
||||
|
||||
# Left side.
|
||||
frame:
|
||||
style "l_indent"
|
||||
xmaximum ONEHALF
|
||||
xfill True
|
||||
|
||||
has vbox
|
||||
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Emulation:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
frame style "l_indent":
|
||||
|
||||
has hbox:
|
||||
spacing 15
|
||||
|
||||
textbutton _("iPhone"):
|
||||
action LaunchEmulator("ios-touch", "small phone touch ios")
|
||||
hovered tt.Action(IPHONE_TEXT)
|
||||
|
||||
textbutton _("iPad"):
|
||||
action LaunchEmulator("ios-touch", "medium tablet touch ios")
|
||||
hovered tt.Action(IPAD_TEXT)
|
||||
|
||||
|
||||
add SPACER
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Build:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
frame style "l_indent":
|
||||
|
||||
has vbox
|
||||
|
||||
textbutton _("Select Xcode Projects Directory"):
|
||||
action IOSIfState(state, IOS_NO_DIRECTORY, Jump("select_xcode_projects_directory"))
|
||||
hovered tt.Action(IOS_SELECT_DIRECTORY_TEXT)
|
||||
|
||||
textbutton _("Create Xcode Project"):
|
||||
action IOSIfState(state, IOS_NO_PROJECT, Jump("create_xcode_project"))
|
||||
hovered tt.Action(IOS_CREATE_PROJECT_TEXT)
|
||||
|
||||
textbutton _("Update Xcode Project"):
|
||||
action IOSIfState(state, IOS_NO_PROJECT, Jump("update_xcode_project"))
|
||||
hovered tt.Action(IOS_UPDATE_PROJECT_TEXT)
|
||||
|
||||
if renpy.macintosh:
|
||||
textbutton _("Launch Xcode"):
|
||||
action IOSIfState(state, IOS_OK, launch_xcode)
|
||||
hovered tt.Action(IOS_XCODE_TEXT)
|
||||
|
||||
# textbutton _("Configure"):
|
||||
# action AndroidIfState(state, ANDROID_NO_CONFIG, Jump("android_configure"))
|
||||
# hovered tt.Action(CONFIGURE_TEXT)
|
||||
#
|
||||
# textbutton _("Build Package"):
|
||||
# action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build"))
|
||||
# hovered tt.Action(BUILD_TEXT)
|
||||
#
|
||||
# textbutton _("Build & Install"):
|
||||
# action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_and_install"))
|
||||
# hovered tt.Action(BUILD_AND_INSTALL_TEXT)
|
||||
#
|
||||
# textbutton _("Build, Install & Launch"):
|
||||
# action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_install_and_launch"))
|
||||
# hovered tt.Action(BUILD_INSTALL_AND_LAUNCH_TEXT)
|
||||
|
||||
add SPACER
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Other:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
frame style "l_indent":
|
||||
|
||||
has vbox
|
||||
|
||||
textbutton _("Open Xcode Projects Directory"):
|
||||
action IOSIfState(state, IOS_NO_PROJECT, OpenDirectory(persistent.xcode_projects_directory, absolute=True))
|
||||
hovered tt.Action(IOS_OPEN_DIRECTORY_TEXT)
|
||||
|
||||
|
||||
# Right side.
|
||||
frame:
|
||||
style "l_indent"
|
||||
xmaximum ONEHALF
|
||||
xfill True
|
||||
|
||||
has vbox
|
||||
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
add SPACER
|
||||
|
||||
if tt.value:
|
||||
text tt.value
|
||||
else:
|
||||
text IOSStateText(state)
|
||||
|
||||
|
||||
textbutton _("Back") action Jump("front_page") style "l_left_button"
|
||||
|
||||
|
||||
label ios:
|
||||
|
||||
if RENIOS_PATH is None:
|
||||
$ interface.yesno(_("Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"), no=Jump("front_page"))
|
||||
$ add_dlc("renios", restart=True)
|
||||
|
||||
call screen ios
|
||||
|
||||
label select_xcode_projects_directory:
|
||||
|
||||
python hide:
|
||||
|
||||
interface.interaction(_("XCODE PROJECTS DIRECTORY"), _("Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"))
|
||||
|
||||
path, is_default = choose_directory(persistent.xcode_projects_directory)
|
||||
|
||||
if is_default:
|
||||
interface.info(_("Ren'Py has set the Xcode Projects Directory to:"), "[path!q]", path=path)
|
||||
|
||||
persistent.xcode_projects_directory = path
|
||||
|
||||
jump ios
|
||||
|
||||
label create_xcode_project:
|
||||
|
||||
$ ios_create(None, True)
|
||||
|
||||
jump ios
|
||||
|
||||
label update_xcode_project:
|
||||
$ ios_populate(None, True)
|
||||
|
||||
jump ios
|
||||
@@ -0,0 +1,234 @@
|
||||
# Copyright 2004-2015 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 mobile build things that are shared by the android
|
||||
# and iOS builds.
|
||||
|
||||
init python:
|
||||
|
||||
class LaunchEmulator(Action):
|
||||
|
||||
def __init__(self, emulator, variants):
|
||||
self.emulator = emulator
|
||||
self.variants = variants
|
||||
|
||||
def __call__(self):
|
||||
|
||||
env = {
|
||||
"RENPY_EMULATOR" : self.emulator,
|
||||
"RENPY_VARIANT" : self.variants,
|
||||
}
|
||||
|
||||
p = project.current
|
||||
p.launch(env=env)
|
||||
|
||||
class MobileInterface(object):
|
||||
"""
|
||||
This is used to interface between the launcher and RAPT/RENIOS.
|
||||
"""
|
||||
|
||||
def __init__(self, platform, edit=True):
|
||||
"""
|
||||
`platform`
|
||||
The name of the platform we're using for. Used for libraries,
|
||||
cancel labels, and logfiles.
|
||||
|
||||
`edit`
|
||||
If true, we launch the log file in the editor on failure.
|
||||
"""
|
||||
|
||||
self.platform = platform
|
||||
self.edit = edit
|
||||
|
||||
self.process = None
|
||||
self.filename = project.current.temp_filename(platform + ".txt")
|
||||
|
||||
self.info_msg = ""
|
||||
|
||||
with open(self.filename, "w"):
|
||||
pass
|
||||
|
||||
def log(self, msg):
|
||||
with open(self.filename, "a") as f:
|
||||
f.write("\n")
|
||||
f.write(msg)
|
||||
f.write("\n")
|
||||
|
||||
def info(self, prompt):
|
||||
self.info_msg = prompt
|
||||
interface.processing(prompt, pause=False)
|
||||
self.log(prompt)
|
||||
|
||||
def yesno(self, prompt, submessage=None):
|
||||
return interface.yesno(prompt, submessage=submessage)
|
||||
|
||||
def yesno_choice(self, prompt, default=None):
|
||||
choices = [ (True, "Yes"), (False, "No") ]
|
||||
return interface.choice(prompt, choices, default)
|
||||
|
||||
def terms(self, url, prompt):
|
||||
submessage = _("{a=%s}%s{/a}") % (url, url)
|
||||
|
||||
if not interface.yesno(prompt, submessage=submessage):
|
||||
self.fail("You must accept the terms and conditions to proceed.", edit=False)
|
||||
|
||||
|
||||
def input(self, prompt, empty=None):
|
||||
|
||||
if empty is None:
|
||||
empty = ''
|
||||
|
||||
while True:
|
||||
rv = interface.input(_("QUESTION"), prompt, default=empty, cancel=Jump("android"))
|
||||
|
||||
rv = rv.strip()
|
||||
|
||||
if rv:
|
||||
return rv
|
||||
|
||||
def choice(self, prompt, choices, default):
|
||||
return interface.choice(prompt, choices, default, cancel=Jump("android"))
|
||||
|
||||
def fail(self, prompt, edit=True):
|
||||
self.log(prompt)
|
||||
prompt = re.sub(r'(http://\S+)', r'{a=\1}\1{/a}', prompt)
|
||||
|
||||
# Open android.txt in the editor.
|
||||
if edit and self.edit:
|
||||
editor.EditAbsolute(self.filename)()
|
||||
|
||||
interface.error(prompt, label="android")
|
||||
|
||||
def success(self, prompt):
|
||||
self.log(prompt)
|
||||
interface.info(prompt, pause=False)
|
||||
|
||||
def final_success(self, prompt):
|
||||
self.log(prompt)
|
||||
interface.info(prompt, label="android")
|
||||
|
||||
def run_yes_thread(self):
|
||||
import time
|
||||
|
||||
try:
|
||||
while self.run_yes:
|
||||
self.process.stdin.write('y\n')
|
||||
self.process.stdin.flush()
|
||||
time.sleep(.2)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def call(self, cmd, cancel=False, use_path=False, yes=False):
|
||||
|
||||
cmd = [ renpy.fsencode(i) for i in cmd ]
|
||||
|
||||
self.cmd = cmd
|
||||
|
||||
f = open(self.filename, "a")
|
||||
|
||||
f.write("\n\n\n")
|
||||
|
||||
if cancel:
|
||||
cancel_action = self.cancel
|
||||
else:
|
||||
cancel_action = None
|
||||
|
||||
startupinfo = None
|
||||
if renpy.windows:
|
||||
startupinfo = subprocess.STARTUPINFO()
|
||||
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
||||
|
||||
self.yes_thread = None
|
||||
|
||||
try:
|
||||
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action)
|
||||
|
||||
kwargs = { }
|
||||
if yes:
|
||||
kwargs["stdin"] = subprocess.PIPE
|
||||
|
||||
try:
|
||||
self.process = subprocess.Popen(cmd, cwd=renpy.fsencode(RAPT_PATH), stdout=f, stderr=f, startupinfo=startupinfo, **kwargs)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc(file=f)
|
||||
raise
|
||||
|
||||
if yes:
|
||||
import threading
|
||||
self.run_yes = True
|
||||
self.yes_thread = threading.Thread(target=self.run_yes_thread)
|
||||
self.yes_thread.daemon = True
|
||||
self.yes_thread.start()
|
||||
|
||||
renpy.call_screen("android_process", interface=self)
|
||||
finally:
|
||||
f.close()
|
||||
interface.hide_screen()
|
||||
|
||||
if yes and self.yes_thread:
|
||||
self.run_yes = False
|
||||
self.yes_thread.join()
|
||||
|
||||
self.process = None
|
||||
self.yes_thread = None
|
||||
|
||||
def check_process(self):
|
||||
rv = self.process.poll()
|
||||
|
||||
if rv is not None:
|
||||
if rv:
|
||||
raise subprocess.CalledProcessError(rv, self.cmd)
|
||||
else:
|
||||
return True
|
||||
|
||||
def download(self, url, dest):
|
||||
try:
|
||||
d = Downloader(url, dest)
|
||||
cancel_action = [ d.cancel, Jump(self.platform) ]
|
||||
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action, bar_value=DownloaderValue(d))
|
||||
ui.timer(.1, action=d.check, repeat=True)
|
||||
ui.interact()
|
||||
finally:
|
||||
interface.hide_screen()
|
||||
|
||||
def background(self, f):
|
||||
try:
|
||||
t = threading.Thread(target=f)
|
||||
t.start()
|
||||
|
||||
interface.processing(self.info_msg, show_screen=True)
|
||||
|
||||
while t.is_alive():
|
||||
renpy.pause(0)
|
||||
t.join(0.25)
|
||||
|
||||
finally:
|
||||
interface.hide_screen()
|
||||
|
||||
|
||||
def cancel(self):
|
||||
if self.process:
|
||||
self.process.terminate()
|
||||
|
||||
renpy.jump(self.platform)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -220,8 +220,8 @@ init python:
|
||||
## this is 'mygame-1.0', the windows distribution will be in the
|
||||
## directory 'mygame-1.0-win', in the 'mygame-1.0-win.zip' file.
|
||||
|
||||
if 'RENPY_NIGHTLY' in os.environ:
|
||||
build.directory_name = os.environ['RENPY_NIGHTLY']
|
||||
if 'RENPY_BUILD_VERSION' in os.environ:
|
||||
build.directory_name = "renpy-" + os.environ['RENPY_BUILD_VERSION']
|
||||
else:
|
||||
build.directory_name = "renpy-" + config.version.rsplit('.', 1)[0]
|
||||
|
||||
@@ -245,13 +245,22 @@ init python:
|
||||
|
||||
## Now, add the Ren'Py distribution in using classify_renpy.
|
||||
|
||||
build.classify_renpy("rapt/**", "rapt")
|
||||
|
||||
build.classify_renpy("**~", None)
|
||||
build.classify_renpy("**/#*", None)
|
||||
build.classify_renpy("**/thumbs.db", None)
|
||||
build.classify_renpy("**/.*", None)
|
||||
|
||||
build.classify_renpy("rapt/**", "rapt")
|
||||
|
||||
build.classify_renpy("renios/prototype/base/", None)
|
||||
build.classify_renpy("renios/prototype/prototype.xcodeproj/*.xcworkspace/", None)
|
||||
build.classify_renpy("renios/prototype/prototype.xcodeproj/xcuserdata/", None)
|
||||
build.classify_renpy("renios/prototype/**", "renios")
|
||||
build.classify_renpy("renios/buildlib/**", "renios")
|
||||
build.classify_renpy("renios/ios.py", "renios")
|
||||
build.classify_renpy("renios/", "renios")
|
||||
|
||||
build.classify_renpy("**.old", None)
|
||||
build.classify_renpy("**.new", None)
|
||||
build.classify_renpy("**.bak", None)
|
||||
@@ -305,16 +314,18 @@ init python:
|
||||
build.classify_renpy("module/*.py*", "source")
|
||||
build.classify_renpy("module/include/", "source")
|
||||
build.classify_renpy("module/include/*.pxd", "source")
|
||||
build.classify_renpy("module/include/*.pxi", "source")
|
||||
build.classify_renpy("module/pysdlsound/", "source")
|
||||
build.classify_renpy("module/pysdlsound/*.py", "source")
|
||||
build.classify_renpy("module/pysdlsound/*.pyx", "source")
|
||||
|
||||
# all-platforms binary.
|
||||
build.classify_renpy("lib/**/_renpysteam*", None)
|
||||
build.classify_renpy("lib/**/*steam_api*", None)
|
||||
build.classify_renpy("lib/*/renpy", None)
|
||||
build.classify_renpy("lib/*/renpy.exe", None)
|
||||
build.classify_renpy("lib/**", "binary")
|
||||
build.classify_renpy("renpy.sh", "binary")
|
||||
build.classify_renpy("renpy.exe", "binary")
|
||||
# renpy.app is now built from scratch from distribute.rpy.
|
||||
|
||||
# jedit rules.
|
||||
@@ -343,4 +354,4 @@ init python:
|
||||
build.package("editra-mac", "zip", "editra-all editra-mac", dlc=True)
|
||||
build.package("editra-windows", "zip", "editra-all editra-windows", dlc=True)
|
||||
build.package("rapt", "zip", "rapt", dlc=True)
|
||||
|
||||
build.package("renios", "zip", "renios", dlc=True)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -107,7 +107,28 @@ init python in distribute:
|
||||
"""
|
||||
|
||||
def __init__(self, filename):
|
||||
self.zipfile = ZipFile(filename, "w", zipfile.ZIP_DEFLATED)
|
||||
self.zipfile = ZipFile(filename, "w", zipfile.ZIP_DEFLATED, True)
|
||||
|
||||
def get_date_time(self, path):
|
||||
"""
|
||||
Gets the datetime for a file. If the time doesn't exist or is
|
||||
weird, use the current time instead.
|
||||
"""
|
||||
|
||||
try:
|
||||
s = os.stat(path)
|
||||
rv = time.gmtime(s.st_mtime)[:6]
|
||||
|
||||
# Check that the time is sensible.
|
||||
if rv[0] < 2000:
|
||||
rv = None
|
||||
except:
|
||||
rv = None
|
||||
|
||||
if rv is None:
|
||||
rv = time.gmtime()[:6]
|
||||
|
||||
return rv
|
||||
|
||||
def add_file(self, name, path, xbit):
|
||||
|
||||
@@ -115,13 +136,7 @@ init python in distribute:
|
||||
raise Exception("path for " + name + " must not be None.")
|
||||
|
||||
zi = zipfile.ZipInfo(name)
|
||||
|
||||
try:
|
||||
s = os.stat(path)
|
||||
zi.date_time = time.gmtime(s.st_mtime)[:6]
|
||||
except:
|
||||
zi.date_time = time.gmtime()[:6]
|
||||
|
||||
zi.date_time = self.get_date_time(path)
|
||||
zi.compress_type = zipfile.ZIP_DEFLATED
|
||||
zi.create_system = 3
|
||||
|
||||
@@ -137,9 +152,7 @@ init python in distribute:
|
||||
return
|
||||
|
||||
zi = zipfile.ZipInfo(name + "/")
|
||||
|
||||
s = os.stat(path)
|
||||
zi.date_time = time.gmtime(s.st_mtime)[:6]
|
||||
zi.date_time = self.get_date_time(path)
|
||||
zi.compress_type = zipfile.ZIP_STORED
|
||||
zi.create_system = 3
|
||||
zi.external_attr = (long(0040755) << 16) | 0x10
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,9 @@ init python:
|
||||
|
||||
config.gl_enable = persistent.gl_enable
|
||||
|
||||
if persistent.show_edit_funcs is None:
|
||||
persistent.show_edit_funcs = True
|
||||
|
||||
if persistent.windows_console is None:
|
||||
persistent.windows_console = False
|
||||
|
||||
@@ -168,7 +171,9 @@ screen preferences:
|
||||
|
||||
textbutton _("Hardware rendering") style "l_checkbox" action ToggleField(persistent, "gl_enable")
|
||||
textbutton _("Show templates") style "l_checkbox" action ToggleField(persistent, "show_templates")
|
||||
textbutton _("Show edit file section") style "l_checkbox" action ToggleField(persistent, "show_edit_funcs")
|
||||
textbutton _("Large fonts") style "l_checkbox" action [ ToggleField(persistent, "large_print"), renpy.utter_restart ]
|
||||
textbutton _("Generate empty strings for translations") style "l_checkbox" action ToggleField(persistent, "generate_empty_strings")
|
||||
|
||||
if renpy.windows:
|
||||
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -121,6 +121,7 @@ init python in project:
|
||||
|
||||
data.setdefault("build_update", False)
|
||||
data.setdefault("packages", [ "all" ])
|
||||
data.setdefault("add_from", True)
|
||||
|
||||
def make_tmp(self):
|
||||
"""
|
||||
@@ -553,62 +554,12 @@ label choose_projects_directory:
|
||||
|
||||
interface.interaction(_("PROJECTS DIRECTORY"), _("Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"), _("This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."),)
|
||||
|
||||
path = persistent.projects_directory
|
||||
path, is_default = choose_directory(persistent.projects_directory)
|
||||
|
||||
if path:
|
||||
default_path = path
|
||||
else:
|
||||
try:
|
||||
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
|
||||
except:
|
||||
default_path = os.path.abspath(config.renpy_base)
|
||||
|
||||
|
||||
if EasyDialogs:
|
||||
|
||||
choice = EasyDialogs.AskFolder(defaultLocation=default_path, wanted=unicode)
|
||||
|
||||
if choice is not None:
|
||||
path = choice
|
||||
else:
|
||||
path = None
|
||||
|
||||
else:
|
||||
|
||||
try:
|
||||
|
||||
cmd = [ "/usr/bin/python", os.path.join(config.gamedir, "tkaskdir.py"), renpy.fsencode(default_path) ]
|
||||
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||
choice = p.stdout.read()
|
||||
code = p.wait()
|
||||
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
code = 0
|
||||
choice = ""
|
||||
path = None
|
||||
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."), label=None)
|
||||
|
||||
if code:
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."), label=None)
|
||||
|
||||
elif choice:
|
||||
path = choice.decode("utf-8")
|
||||
|
||||
if path is None:
|
||||
path = default_path
|
||||
if is_default:
|
||||
interface.info(_("Ren'Py has set the projects directory to:"), "[path!q]", path=path)
|
||||
|
||||
path = renpy.fsdecode(path)
|
||||
|
||||
if os.path.isdir(path):
|
||||
persistent.projects_directory = path
|
||||
else:
|
||||
path = os.path.abspath(config.renpy_base)
|
||||
persistent.projects_directory = path
|
||||
|
||||
project.manager.scan()
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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
|
||||
@@ -104,9 +104,9 @@ init 1 python:
|
||||
|
||||
def checkbox(full, color):
|
||||
if full:
|
||||
return im.Twocolor("images/checkbox_full.png", color, color, yalign=0.5)
|
||||
return im.Twocolor("images/checkbox_full.png", color, color, style="l_checkbox_box")
|
||||
else:
|
||||
return im.Twocolor("images/checkbox_empty.png", color, color, yalign=0.5)
|
||||
return im.Twocolor("images/checkbox_empty.png", color, color, style="l_checkbox_box")
|
||||
|
||||
init 1:
|
||||
|
||||
@@ -322,6 +322,10 @@ init 1:
|
||||
selected_hover_background checkbox(True, HOVER)
|
||||
insensitive_background checkbox(False, DISABLED)
|
||||
|
||||
style l_checkbox_box:
|
||||
yanchor 0.5
|
||||
ypos 11
|
||||
|
||||
style l_checkbox_text is l_button_text:
|
||||
selected_font LIGHT
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2015 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,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/add_file.rpy:7
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-11-17 23:18
|
||||
# : Translation updated at 2013-11-17 23:18
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
@@ -80,7 +80,7 @@ translate arabic strings:
|
||||
|
||||
# game/android.rpy:409
|
||||
old "Build:"
|
||||
new ""
|
||||
new "بناء"
|
||||
|
||||
# game/android.rpy:417
|
||||
old "Install SDK & Create Keys"
|
||||
@@ -162,3 +162,18 @@ translate arabic strings:
|
||||
old "The port must be a number."
|
||||
new "يجب ان يكون العنوان مكون من أرقام فقط"
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/android.rpy:46
|
||||
old "Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device."
|
||||
new "يبني الحزمة الخاصة بالأندرويد و يقوم بتنصيبها على جهاز أندرويد متصل بجهازك, ثم يقوم بإقلاع البرنامج على جهاز الأندرويد."
|
||||
|
||||
# game/android.rpy:290
|
||||
old "Television"
|
||||
new "تلفاز"
|
||||
|
||||
# game/android.rpy:326
|
||||
old "Build, Install & Launch"
|
||||
new "بناء,تنصيب و إقلاع."
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/choose_directory.rpy:73
|
||||
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
|
||||
new "لم يتمكن رينباي من تشغيل بايثون باستخدام tkinter لاختيار المجلد. الرجال تنصيب حزمة tkinter أو python-tk."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/choose_theme.rpy:274
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
@@ -526,3 +526,64 @@ translate arabic strings:
|
||||
old "Location"
|
||||
new "الموقع"
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:387
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
new "تشغيل الأصوات من الحافظة مفعّل. إضغط لإيقافه زريّ: Shift+C"
|
||||
|
||||
# renpy/common/00preferences.rpy:389
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "التكلّم التلقائي مفعَل. لإيقافه إضغط زر V"
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# renpy/common/00updater.rpy:362
|
||||
old "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "تحديث برنامج رينباي غير مدعوم على الأجهزة المحمولة."
|
||||
|
||||
# renpy/common/00updater.rpy:478
|
||||
old "An error is being simulated."
|
||||
new "يتم محاكاة خطأ الآن."
|
||||
|
||||
# renpy/common/00updater.rpy:654
|
||||
old "Either this project does not support updating, or the update status file was deleted."
|
||||
new "هذا المشروع لا يدعم التحديث، أو أن ملف حالة نسخة البرنامج محذوفة."
|
||||
|
||||
# renpy/common/00updater.rpy:668
|
||||
old "This account does not have permission to perform an update."
|
||||
new "هذا الحساب ليست لديه الصلاحية ليقوم بالتحديث."
|
||||
|
||||
# renpy/common/00updater.rpy:671
|
||||
old "This account does not have permission to write the update log."
|
||||
new " هذا الحساب ليست لديه الصلاحية ليكتب ملف التحديث."
|
||||
|
||||
# renpy/common/00updater.rpy:696
|
||||
old "Could not verify update signature."
|
||||
new "لم نتمكن من التحقق من توقيع التحديث update signature."
|
||||
|
||||
# renpy/common/00updater.rpy:956
|
||||
old "The update file was not downloaded."
|
||||
new "لم يتم تحميل ملف التحديث."
|
||||
|
||||
# renpy/common/00updater.rpy:974
|
||||
old "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "ملف التحديث لا يحتوي على المختصرات الصحيحة - قد يكون معطوباً."
|
||||
|
||||
# renpy/common/00updater.rpy:1030
|
||||
old "While unpacking {}, unknown type {}."
|
||||
new "عند فك الحزمة {}، نوع مجهول {}."
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:437
|
||||
old "Rectangle copied to clipboard."
|
||||
new "تم نسخ المربع إلى الحافظة."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:440
|
||||
old "Position copied to clipboard."
|
||||
new "تم نسخ الموضع إلى الحافظة."
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/distribute_gui.rpy:139
|
||||
@@ -45,3 +45,22 @@ translate arabic strings:
|
||||
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
|
||||
new "مشروعك يخلو من معلومات النشر, هل ترغب في إضافة هذه المعلومات في نهاية ملف options.rpy؟"
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/distribute_gui.rpy:194
|
||||
old "Add from clauses to calls, once"
|
||||
new "إضافة بند 'مِن' إلى أمر الجلب, مرة واحدة"
|
||||
|
||||
# game/distribute_gui.rpy:231
|
||||
old "Options:"
|
||||
new "خيارات:"
|
||||
|
||||
# game/distribute_gui.rpy:238
|
||||
old "Add from clauses to calls"
|
||||
new "إضافة بنود 'مِن' إلى أمر الجلب"
|
||||
|
||||
# game/distribute_gui.rpy:246
|
||||
old "Adding from clauses to call statements that do not have them."
|
||||
new "إضافة بنود 'مِن' إلى أوامر الجلب التي لا تحتوي عليها."
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Translation updated at 2013-04-30 07:54
|
||||
# Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
@@ -114,3 +114,10 @@ translate arabic strings:
|
||||
old "Recompiling all rpy files into rpyc files..."
|
||||
new "يتم إعادة حزم الملفات من صيغة rpy إلى rpyc..."
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/front_page.rpy:246
|
||||
old "iOS"
|
||||
new "iOS نظام تشغيل"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/interface.rpy:89
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
# Translation updated at 2015-03-22 20:50
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/ios.rpy:28
|
||||
old "To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "لبناء حزم الـ iOS, الرجاء تحميل البرنامج الخاص بذلك renios و فك الضغط عنه, ثم وضعه في مجلد رينباي الرئيسي. بعد ذلك قم بإعادة تشغيل رينباي."
|
||||
|
||||
# game/ios.rpy:29
|
||||
old "The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it."
|
||||
new "لم يتم اختيار المسار الذي سيتم وضع Xcode فيه. الرجاء ضغط زر اختيار المجلد لاختيار المكان الصحيح."
|
||||
|
||||
# game/ios.rpy:30
|
||||
old "There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one."
|
||||
new "لا يوجد مشروع Xcode متطابق مع مشروع رينباي الحالي. الرجاء اختيار زر 'صنع مشروع Xcode' لبدء واحد."
|
||||
|
||||
# game/ios.rpy:31
|
||||
old "An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it."
|
||||
new "يوجد مشروع Xcode. لتحديثه قم بضغط زر 'تحديث مشروع Xcode' ليصبح متطابقاً مع آخر التعديلات على اللعبة’ او قم باستعمال Xcode للبناء و التنصيب."
|
||||
|
||||
# game/ios.rpy:33
|
||||
old "Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down."
|
||||
new "يقوم بمحاكاة جهاز أيفون. اللمس يتم محاكاته عن طريق الضغط بالزر الأيسر للفأرة."
|
||||
|
||||
# game/ios.rpy:34
|
||||
old "Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down."
|
||||
new "يقوم بمحاكاة جهاز أيفون. اللمس يتم محاكاته عن طريق الضغط بالزر الأيسر للفأرة."
|
||||
|
||||
# game/ios.rpy:36
|
||||
old "Selects the directory where Xcode projects will be placed."
|
||||
new "إختر المجلد الذي سيكون فيه مشروع Xcode."
|
||||
|
||||
# game/ios.rpy:37
|
||||
old "Creates an Xcode project corresponding to the current Ren'Py project."
|
||||
new "يقوم بصنع مشروع Xcode متطابق مع مشروع رينباي الحالي."
|
||||
|
||||
# game/ios.rpy:38
|
||||
old "Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes."
|
||||
new "يقوم بتحديث مشروع Xcode ليصبح متطابقاً مع ملفات اللعبة. يجب أن يتم تكرار هذه العملية مع كل تغيير في اللعبة."
|
||||
|
||||
# game/ios.rpy:39
|
||||
old "Opens the Xcode project in Xcode."
|
||||
new "يقوم بفتح مشروع Xcode في Xcode."
|
||||
|
||||
# game/ios.rpy:41
|
||||
old "Opens the directory containing Xcode projects."
|
||||
new "يقوم بفتح المجلد الموجود فيه مشاريع Xcode."
|
||||
|
||||
# game/ios.rpy:126
|
||||
old "The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"
|
||||
new "مشروع Xcode موجود مسبقاً. هل تريد تغيير إسم المشروع القديم, و استبداله بالجديد؟"
|
||||
|
||||
# game/ios.rpy:200
|
||||
old "iOS: [project.current.name!q]"
|
||||
new "iOS: [project.current.name!q]"
|
||||
|
||||
# game/ios.rpy:229
|
||||
old "iPhone"
|
||||
new "أيفون"
|
||||
|
||||
# game/ios.rpy:233
|
||||
old "iPad"
|
||||
new "أيباد"
|
||||
|
||||
# game/ios.rpy:253
|
||||
old "Select Xcode Projects Directory"
|
||||
new "إختر مسار مشاريع Xcode"
|
||||
|
||||
# game/ios.rpy:257
|
||||
old "Create Xcode Project"
|
||||
new "صنع مشروع Xcode"
|
||||
|
||||
# game/ios.rpy:261
|
||||
old "Update Xcode Project"
|
||||
new "تحديث مشروع Xcode"
|
||||
|
||||
# game/ios.rpy:266
|
||||
old "Launch Xcode"
|
||||
new "إقلاع Xcode"
|
||||
|
||||
# game/ios.rpy:301
|
||||
old "Open Xcode Projects Directory"
|
||||
new "فتح مجلد مشاريع Xcode"
|
||||
|
||||
# game/ios.rpy:334
|
||||
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
|
||||
new "قبل صنع الحزم الخاصة ببرامج iOS يجب ان تقوم بتحميل برنامج renios المساند لرينباي على اجهزة أبل. هل تريد تحميل renios الآن؟"
|
||||
|
||||
# game/ios.rpy:343
|
||||
old "XCODE PROJECTS DIRECTORY"
|
||||
new "مسار مشاريع Xcode"
|
||||
|
||||
# game/ios.rpy:343
|
||||
old "Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "الرجاء إختيار المجلد الذي سيتم وضع مشاريع Xcode فيه باستخدام نافذة اختيار المجلد. قد تكون النافذة مفتوحة خلف هذه النافذة."
|
||||
|
||||
# game/ios.rpy:348
|
||||
old "Ren'Py has set the Xcode Projects Directory to:"
|
||||
new "رينباي قام بتحديد مجلد مشاريع Xcode إلى:"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/navigation.rpy:150
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
@@ -82,3 +82,14 @@ translate arabic strings:
|
||||
old "Large fonts"
|
||||
new "خط كبير"
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/preferences.rpy:174
|
||||
old "Show edit file section"
|
||||
new "عرض قسم تعديل الملف"
|
||||
|
||||
# game/preferences.rpy:176
|
||||
old "Generate empty strings for translations"
|
||||
new "صنع خانات فارغة للترجمات"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate arabic python:
|
||||
translate arabic python:
|
||||
al = "DejaVuSans.ttf"
|
||||
style.l_default.font = al
|
||||
style.l_default.size = 16
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
# game/translations.rpy:10
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
# : Translation updated at 2013-04-30 07:54
|
||||
|
||||
translate arabic strings:
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/about.rpy:39
|
||||
old "[version!q]"
|
||||
new "[version!q]"
|
||||
|
||||
# game/about.rpy:43
|
||||
old "View license"
|
||||
new "Näytä lisenssi"
|
||||
|
||||
# game/about.rpy:45
|
||||
old "Back"
|
||||
new "Takaisin"
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/add_file.rpy:28
|
||||
old "FILENAME"
|
||||
new "TIEDOSTONIMI"
|
||||
|
||||
# game/add_file.rpy:28
|
||||
old "Enter the name of the script file to create."
|
||||
new "Kirjoita skriptitiedoston nimi, jonka haluat luoda."
|
||||
|
||||
# game/add_file.rpy:31
|
||||
old "The filename must have the .rpy extension."
|
||||
new "Tiedostolla on oltava .rpy -tunniste."
|
||||
|
||||
# game/add_file.rpy:39
|
||||
old "The file already exists."
|
||||
new "Tiedosto on jo olemassa."
|
||||
|
||||
# game/add_file.rpy:42
|
||||
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 "# Ren'Py lataa automaattisesti kaikki scriptitiedostot, joilla on .rpy pääte. Käyttääksesi tätä\n# tiedostoa, luo label ja hyppää siihen toisesta tiedostosta.\n"
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/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 "Luodaksesi Android-sovelluksia, ole hyvä ja lataa RAPT, pura se, ja aseta se Ren'Py kansioon. Tämän jälkeen käynnistä Ren'Py uudelleen."
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 32-bit 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/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "32-bittinen Javan kehitystyökalu vaaditaan Android-sovellusten luomiseen Windowsilla. JDK on erilainen kuin JRE, joten on mahdollista, että sinulla on Java ilman JDK:ta.\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}Lataa ja asenna JDK{/a}, ja sen jälkeen käynnistä Ren'Py uudelleen."
|
||||
|
||||
# game/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."
|
||||
new "RAPT on asennettu, mutta sinun on asennettava Android SDK ennen kuin voit luoda Android-sovelluksia. Valitse 'Asenna SDK' tehdäksesi tämän."
|
||||
|
||||
# game/android.rpy:33
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
new "RAPT on asennettu, mutta avainta ei ole konfiguroitu. Luo uusi avain, tai palauta android.keystore."
|
||||
|
||||
# game/android.rpy:34
|
||||
old "The current project has not been configured. Use \"Configure\" to configure it before building."
|
||||
new "Valittua projektia ei ole konfiguroitu. Käytä \"Konfigurointi\" -toimintoa konfiguroidaksesi sen ennen sovelluksen kokoamista."
|
||||
|
||||
# game/android.rpy:35
|
||||
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
|
||||
new "Valitse \"Kokoa\" kootaksesi projektin, tai kiinnitä Android-laite ja valitse \"Kokoa ja asenna\" kootaksesi ja asentaaksesi sen laitteeseen."
|
||||
|
||||
# game/android.rpy:37
|
||||
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Pyrkii emuloimaan Android-puhelinta.\n\nKosketus valintaa emuloidaan hiirellä, mutta vain kun nappia pidetään pohjassa. Esc toimii Menu-näppäimenä ja Pg Up toimii peruutusnappina."
|
||||
|
||||
# game/android.rpy:38
|
||||
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Pyrkii emuloimaan Android-tablettia.\n\nKosketus valintaa emuloidaan hiirellä, mutta vain kun nappia pidetään pohjassa. Esc toimii Menu-näppäimenä ja Pg Up toimii peruutusnappina."
|
||||
|
||||
# game/android.rpy:39
|
||||
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Pyrkii emuloimaan televisiopohjaista Android-konsolia, kuten OUYA tai Fire TV.\n\nOhjainnäppäimet ovat nuolinäppäimet, Enter toimii valitsijana, Esc toimii Menu-näppäimenä ja Pg Up toimii peruutusnappina."
|
||||
|
||||
# game/android.rpy:41
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "Lataa ja asentaa Android SDK:n ja tarvittavat lisäpaketit. Lisäksi, voidaan käyttää avainten luomiseen."
|
||||
|
||||
# game/android.rpy:42
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
new "Konfiguroi paketin nimen, version sekä kaiken muun projektia koskevan tiedon."
|
||||
|
||||
# game/android.rpy:43
|
||||
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
|
||||
new "Avaa tiedoston, joka sisältää Google Play -avaimet, editorissa.\n\nTätä tarvitaan vain, jos sovellus käyttää laajennus-APK:ta. Lue dokumentit saadaksesi lisätietoa."
|
||||
|
||||
# game/android.rpy:44
|
||||
old "Builds the Android package."
|
||||
new "Rakentaa Android-paketin."
|
||||
|
||||
# game/android.rpy:45
|
||||
old "Builds the Android package, and installs it on an Android device connected to your computer."
|
||||
new "Rakentaa Android-paketin, ja asentaa sen tietokoneeseen kytkettyyn Android-laitteeseen."
|
||||
|
||||
# game/android.rpy:47
|
||||
old "Connects to an Android device running ADB in TCP/IP mode."
|
||||
new "Yhdistää Android-laitteeseen, jossa on käytössä ADB TCP/IP -tilassa."
|
||||
|
||||
# game/android.rpy:48
|
||||
old "Disconnects from an Android device running ADB in TCP/IP mode."
|
||||
new "Katkaisee yhteyden Android-laitteeseen, jossa on käytössä ADB TCP/IP -tila."
|
||||
|
||||
# game/android.rpy:164
|
||||
old "{a=%s}%s{/a}"
|
||||
new "{a=%s}%s{/a}"
|
||||
|
||||
# game/android.rpy:176
|
||||
old "QUESTION"
|
||||
new "KYSYMYS"
|
||||
|
||||
# game/android.rpy:445
|
||||
old "Android: [project.current.name!q]"
|
||||
new "Android: [project.current.name!q]"
|
||||
|
||||
# game/android.rpy:465
|
||||
old "Emulation:"
|
||||
new "Emulointi:"
|
||||
|
||||
# game/android.rpy:473
|
||||
old "Phone"
|
||||
new "Puhelin"
|
||||
|
||||
# game/android.rpy:477
|
||||
old "Tablet"
|
||||
new "Tablettitietokone"
|
||||
|
||||
# game/android.rpy:481
|
||||
old "Television / OUYA"
|
||||
new "Televisio / OUYA"
|
||||
|
||||
# game/android.rpy:493
|
||||
old "Build:"
|
||||
new "Kokoa:"
|
||||
|
||||
# game/android.rpy:501
|
||||
old "Install SDK & Create Keys"
|
||||
new "Asenna SDK & Luo avaimet"
|
||||
|
||||
# game/android.rpy:505
|
||||
old "Configure"
|
||||
new "Muokkaa asetuksia"
|
||||
|
||||
# game/android.rpy:509
|
||||
old "Build Package"
|
||||
new "Kokoamispaketti:"
|
||||
|
||||
# game/android.rpy:513
|
||||
old "Build & Install"
|
||||
new "Kokoa & Asenna"
|
||||
|
||||
# game/android.rpy:524
|
||||
old "Other:"
|
||||
new "Muu:"
|
||||
|
||||
# game/android.rpy:532
|
||||
old "Remote ADB Connect"
|
||||
new "Langaton ADB-yhdistäminen:"
|
||||
|
||||
# game/android.rpy:536
|
||||
old "Remote ADB Disconnect"
|
||||
new "Langaton ADB-katkaisu:"
|
||||
|
||||
# game/android.rpy:569
|
||||
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 "Ennen Android-sovellusten pakkausta, sinun on ladattava RAPT (Ren'Py Android Packaging Tool). Haluatko ladata RAPT:in nyt?"
|
||||
|
||||
# game/android.rpy:615
|
||||
old "Remote ADB Address"
|
||||
new "Langaton ADB-osoite"
|
||||
|
||||
# game/android.rpy:615
|
||||
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 "Syötä yhdistettävän kohteen IP-osoite ja porttinumero, esimerkin \"192.168.1.143:5555\" mukaisesti. Selvitä laitteesi tiedoista kykeneekö se langattomaan ADB:hen, ja jos näin on, käytettävä osoite ja portti."
|
||||
|
||||
# game/android.rpy:627
|
||||
old "Invalid remote ADB address"
|
||||
new "Langaton ADB-osoite ei kelpaa."
|
||||
|
||||
# game/android.rpy:627
|
||||
old "The address must contain one exactly one ':'."
|
||||
new "Osoitteessa on oltava yksi, ja vain yksi, ':'."
|
||||
|
||||
# game/android.rpy:631
|
||||
old "The host may not contain whitespace."
|
||||
new "Isäntä ei voi sisältää välilyöntejä."
|
||||
|
||||
# game/android.rpy:637
|
||||
old "The port must be a number."
|
||||
new "Portin on oltava numero."
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/choose_theme.rpy:303
|
||||
old "Teemaa ei voitu vaihtaa. Kenties options.rpy:tä muutettiin liikaa."
|
||||
new ""
|
||||
|
||||
# game/choose_theme.rpy:368
|
||||
old "Display"
|
||||
new "Näyttö"
|
||||
|
||||
# game/choose_theme.rpy:369
|
||||
old "Window"
|
||||
new "Ikkuna"
|
||||
|
||||
# game/choose_theme.rpy:370
|
||||
old "Fullscreen"
|
||||
new "Koko näyttö"
|
||||
|
||||
# game/choose_theme.rpy:371
|
||||
old "Planetarium"
|
||||
new "Planetaario"
|
||||
|
||||
# game/choose_theme.rpy:378
|
||||
old "Sound Volume"
|
||||
new "Ääniefektien voimakkuus"
|
||||
|
||||
# game/choose_theme.rpy:412
|
||||
old "Choose Theme"
|
||||
new "Valitse teema"
|
||||
|
||||
# game/choose_theme.rpy:425
|
||||
old "Theme"
|
||||
new "Teema"
|
||||
|
||||
# game/choose_theme.rpy:449
|
||||
old "Color Scheme"
|
||||
new "Värikartta"
|
||||
|
||||
# game/choose_theme.rpy:480
|
||||
old "Continue"
|
||||
new "Jatka"
|
||||
|
||||
@@ -0,0 +1,497 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00action_file.rpy:142
|
||||
old "%b %d, %H:%M"
|
||||
new "%b %d, %H:%M"
|
||||
|
||||
# renpy/common/00action_file.rpy:621
|
||||
old "Quick save complete."
|
||||
new "Pikatallennus suoritettu."
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00console.rpy:179
|
||||
old "%(version)s console, originally by Shiz, C, and delta.\n"
|
||||
new "%(version)n konsoli, alunperin tehneet Shiz, C ja delta.\n"
|
||||
|
||||
# renpy/common/00console.rpy:180
|
||||
old "Press <esc> to exit console. Type help for help.\n"
|
||||
new "Paina <esc> poistuaksesi konsolista. Käytä komentoa help saadaksesi apua."
|
||||
|
||||
# renpy/common/00console.rpy:184
|
||||
old "Ren'Py script enabled."
|
||||
new "Ren'Py-skriptikieli käytössä."
|
||||
|
||||
# renpy/common/00console.rpy:186
|
||||
old "Ren'Py script disabled."
|
||||
new "Ren'Py-skriptikieli poissa käytöstä."
|
||||
|
||||
# renpy/common/00console.rpy:392
|
||||
old "help: show this help"
|
||||
new "help: näytä tämä apuviesti"
|
||||
|
||||
# renpy/common/00console.rpy:397
|
||||
old "commands:\n"
|
||||
new "komennot:\n"
|
||||
|
||||
# renpy/common/00console.rpy:407
|
||||
old " <renpy script statement>: run the statement\n"
|
||||
new " <renpy script-väite>: suorita väite\n"
|
||||
|
||||
# renpy/common/00console.rpy:409
|
||||
old " <python expression or statement>: run the expression or statement"
|
||||
new " <python ekspressio tai väite>: suorita ekspressio tai väite"
|
||||
|
||||
# renpy/common/00console.rpy:417
|
||||
old "clear: clear the console history"
|
||||
new "clear: tyhjennä konsolin historia"
|
||||
|
||||
# renpy/common/00console.rpy:421
|
||||
old "exit: exit the console"
|
||||
new "exit: poistu konsolista"
|
||||
|
||||
# renpy/common/00console.rpy:429
|
||||
old "load <slot>: loads the game from slot"
|
||||
new "load <tallennuspaikka>: lataa pelin halutusta tallennuspaikasta"
|
||||
|
||||
# renpy/common/00console.rpy:442
|
||||
old "save <slot>: saves the game in slot"
|
||||
new "save <tallennuspaikka>: tallentaa pelin tallennuspaikkaan"
|
||||
|
||||
# renpy/common/00console.rpy:453
|
||||
old "reload: reloads the game, refreshing the scripts"
|
||||
new "reload: lataa pelin uudelleen, päivittäen skriptit"
|
||||
|
||||
# renpy/common/00console.rpy:461
|
||||
old "watch <expression>: watch a python expression"
|
||||
new "watch <ekspressio>: tarkkaile python-ekspressiota"
|
||||
|
||||
# renpy/common/00console.rpy:470
|
||||
old "unwatch <expression>: stop watching an expression"
|
||||
new "unwatch <ekspressio>: lakkaa tarkkailemasta ekspressiota"
|
||||
|
||||
# renpy/common/00console.rpy:478
|
||||
old "unwatchall: stop watching all expressions"
|
||||
new "unwatchall: lopeta kaikkien ekspressioiden tarkkailu"
|
||||
|
||||
# renpy/common/00console.rpy:484
|
||||
old "jump <label>: jumps to label"
|
||||
new "jump <tunnus>: hyppää 'script.rpy'-tiedosto(i)ssa olevaan, tunnuksella merkittyyn kohtaan"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00gallery.rpy:561
|
||||
old "Image [index] of [count] locked."
|
||||
new ""
|
||||
|
||||
# renpy/common/00gallery.rpy:581
|
||||
old "prev"
|
||||
new "edellinen"
|
||||
|
||||
# renpy/common/00gallery.rpy:582
|
||||
old "next"
|
||||
new "seuraava"
|
||||
|
||||
# renpy/common/00gallery.rpy:583
|
||||
old "slideshow"
|
||||
new "diaesitys"
|
||||
|
||||
# renpy/common/00gallery.rpy:584
|
||||
old "return"
|
||||
new "palaa"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00gltest.rpy:68
|
||||
old "Graphics Acceleration"
|
||||
new "Grafiikkakiihdytys"
|
||||
|
||||
# renpy/common/00gltest.rpy:72
|
||||
old "Automatically Choose"
|
||||
new "Valitse automaattisesti"
|
||||
|
||||
# renpy/common/00gltest.rpy:77
|
||||
old "Force Angle/DirectX Renderer"
|
||||
new "Pakota Angle/DirectX-renderöinti"
|
||||
|
||||
# renpy/common/00gltest.rpy:81
|
||||
old "Force OpenGL Renderer"
|
||||
new "Pakota OpenGL-renderöinti"
|
||||
|
||||
# renpy/common/00gltest.rpy:85
|
||||
old "Force Software Renderer"
|
||||
new "Pakota Software-renderöinti"
|
||||
|
||||
# renpy/common/00gltest.rpy:91
|
||||
old "Changes will take effect the next time this program is run."
|
||||
new "Muutokset tulevat voimaan, kun käynnistät ohjelman uudelleen."
|
||||
|
||||
# renpy/common/00gltest.rpy:95
|
||||
old "Quit"
|
||||
new "Poistu"
|
||||
|
||||
# renpy/common/00gltest.rpy:100
|
||||
old "Return"
|
||||
new "Palaa"
|
||||
|
||||
# renpy/common/00gltest.rpy:130
|
||||
old "Performance Warning"
|
||||
new "Suorituskyvyn varoitus"
|
||||
|
||||
# renpy/common/00gltest.rpy:135
|
||||
old "This computer is using software rendering."
|
||||
new "Tietokone käyttää software-renderöintiä."
|
||||
|
||||
# renpy/common/00gltest.rpy:137
|
||||
old "This computer is not using shaders."
|
||||
new "Tietokone ei käytä varjostimia."
|
||||
|
||||
# renpy/common/00gltest.rpy:139
|
||||
old "This computer is displaying graphics slowly."
|
||||
new "Tietokone näyttää grafiikkaa hitaasti."
|
||||
|
||||
# renpy/common/00gltest.rpy:141
|
||||
old "This computer has a problem displaying graphics: [problem]."
|
||||
new "Tietokoneella on ongelmia grafiikan näyttämisessä: [problem]"
|
||||
|
||||
# renpy/common/00gltest.rpy:146
|
||||
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 "Sen grafiikka-ajurit voivat olla vanhentuneita tai ne saattavat toimia väärin. Tämä voi johtaa hitaaseen tai väärään grafiikan esittämiseen. DirectX:n päivittäminen saattaa korjata ongelman."
|
||||
|
||||
# renpy/common/00gltest.rpy:148
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
|
||||
new "Sen grafiikka-ajurit voivat olla vanhentuneita tai ne saattavat toimia väärin. Tämä voi johtaa hitaaseen tai väärään grafiikan esittämiseen."
|
||||
|
||||
# renpy/common/00gltest.rpy:153
|
||||
old "Update DirectX"
|
||||
new "Päivitä DirectX"
|
||||
|
||||
# renpy/common/00gltest.rpy:159
|
||||
old "Continue, Show this warning again"
|
||||
new "Jatka, näytä tämä varoitus uudelleen"
|
||||
|
||||
# renpy/common/00gltest.rpy:163
|
||||
old "Continue, Don't show warning again"
|
||||
new "Jatka, älä näytä tätä varoitusta enää uudelleen"
|
||||
|
||||
# renpy/common/00gltest.rpy:189
|
||||
old "Updating DirectX."
|
||||
new "Päivitetään DirectX:ää."
|
||||
|
||||
# renpy/common/00gltest.rpy:193
|
||||
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
|
||||
new "DirectX verkkoasennus on alkanut. Se voi olla aluksi minimisoituna työkalupalkilla. Seuraa ohjeita asentaaksesi DirectX:n."
|
||||
|
||||
# renpy/common/00gltest.rpy:197
|
||||
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}Huomaa:{/b} Microsoftin DirectX verkkoasennusohjelma asentaa, oletusarvoisesti, Bing-työkalupalkin. Jos et halua tätä työkalupalkkia, poista valinta oikeasta laatikosta."
|
||||
|
||||
# renpy/common/00gltest.rpy:201
|
||||
old "When setup finishes, please click below to restart this program."
|
||||
new "Kun asennus on valmis, klikkaa alhaalta käynnistääksesi tämän ohjelman uudelleen."
|
||||
|
||||
# renpy/common/00gltest.rpy:203
|
||||
old "Restart"
|
||||
new "Käynnistä uudelleen"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00keymap.rpy:199
|
||||
old "Saved screenshot as %s."
|
||||
new "Näytönkaappaus tallennettu nimellä %s."
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00layout.rpy:444
|
||||
old "Are you sure?"
|
||||
new "Oletko varma?"
|
||||
|
||||
# renpy/common/00layout.rpy:445
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Oletko varma, että haluat poistaa tämän tallennuksen?"
|
||||
|
||||
# renpy/common/00layout.rpy:446
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Oletko varma, että haluat korvata tallennuksen uudella?"
|
||||
|
||||
# renpy/common/00layout.rpy:447
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "Lataamalla tallennuksen menetät tallentamattoman edistyksen.\nOletko varma, että haluat tehdä näin?"
|
||||
|
||||
# renpy/common/00layout.rpy:448
|
||||
old "Are you sure you want to quit?"
|
||||
new "Haluatko varmasti lopettaa?"
|
||||
|
||||
# renpy/common/00layout.rpy:449
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Haluatko varmasti palata päävalikkoon?\nMenetät kaikki tallentamattomat tiedot."
|
||||
|
||||
# renpy/common/00layout.rpy:450
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Oletko varma, että haluat käyttää skippausta?"
|
||||
|
||||
# renpy/common/00layout.rpy:451
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Oletko varma, että haluat skipata seuraavaan valintaan?"
|
||||
|
||||
# renpy/common/00layout.rpy:452
|
||||
old "Are you sure you want to skip to unseen dialogue or the next choice?"
|
||||
new "Oletko varma, että haluat skipata uuteen dialogiin tai seuraavaan valintaan?"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00library.rpy:149
|
||||
old "Skip Mode"
|
||||
new "Skippaustila"
|
||||
|
||||
# renpy/common/00library.rpy:152
|
||||
old "Fast Skip Mode"
|
||||
new "Pikaskippaustila"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:373
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Tietokoneen ääninäyttely käytössä. Paina 'v' lopettaaksesi."
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/00updater.rpy:1377
|
||||
old "Updater"
|
||||
new "Päivittäjä"
|
||||
|
||||
# renpy/common/00updater.rpy:1386
|
||||
old "This program is up to date."
|
||||
new "Käytät jo uuinta versiota."
|
||||
|
||||
# renpy/common/00updater.rpy:1388
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
new "[u.version] on saatavilla. Haluatko asentaa sen?"
|
||||
|
||||
# renpy/common/00updater.rpy:1390
|
||||
old "Preparing to download the updates."
|
||||
new "Valmistellaan päivitysten lataamista."
|
||||
|
||||
# renpy/common/00updater.rpy:1392
|
||||
old "Downloading the updates."
|
||||
new "Ladataan päivityksiä."
|
||||
|
||||
# renpy/common/00updater.rpy:1394
|
||||
old "Unpacking the updates."
|
||||
new "Puretaan päivityksiä."
|
||||
|
||||
# renpy/common/00updater.rpy:1398
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "Päivitykset on asennettu. Ohjelma käynnistyy nyt uudelleen."
|
||||
|
||||
# renpy/common/00updater.rpy:1400
|
||||
old "The updates have been installed."
|
||||
new "Päivitykset on asennettu."
|
||||
|
||||
# renpy/common/00updater.rpy:1402
|
||||
old "The updates were cancelled."
|
||||
new "Päivitykset peruttiin."
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:198
|
||||
old "Empty Slot."
|
||||
new "Tyhjä paikka."
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:355
|
||||
old "Previous"
|
||||
new "Edellinen"
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:362
|
||||
old "Next"
|
||||
new "Seuraava"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/_compat/preferences.rpym:428
|
||||
old "Joystick Mapping"
|
||||
new "Peliohjaimen näppäimet"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:65
|
||||
old "Developer Menu"
|
||||
new "Kehittäjävalikko"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:67
|
||||
old "Reload Game (Shift+R)"
|
||||
new "Käynnistä peli uudelleen (Shift+R)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:69
|
||||
old "Console (Shift+O)"
|
||||
new "Konsoli (Shift+O)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:71
|
||||
old "Variable Viewer"
|
||||
new "Muuttujat"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:73
|
||||
old "Theme Test"
|
||||
new "Teematesti"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:75
|
||||
old "Image Location Picker"
|
||||
new "Kuvan sijainnin selvitin"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:77
|
||||
old "Filename List"
|
||||
new "Tiedostonimilista"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:81
|
||||
old "Show Image Load Log"
|
||||
new "Näytä kuvanlatausloki"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:84
|
||||
old "Hide Image Load Log"
|
||||
new "Piilota kuvanlatausloki"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:150
|
||||
old "No variables have changed since the game started."
|
||||
new "Yksikään muuttuja ei ole muuttunut pelin alkamisen jälkeen."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:153
|
||||
old "Return to the developer menu"
|
||||
new "Palaa kehittäjävalikkoon"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:385
|
||||
old "Rectangle: %r"
|
||||
new "Suorakulmio: %r"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:390
|
||||
old "Mouse position: %r"
|
||||
new "Hiiren sijainti: %r"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:392
|
||||
old "Right-click or escape to quit."
|
||||
new "Paina Esc tai hiiren oikeaa näppäintä poistuaksesi."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:443
|
||||
old "Done"
|
||||
new "Valmis"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:46
|
||||
old "Displayable Inspector"
|
||||
new "Näkyvien objektien tutkija"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:52
|
||||
old "Nothing to inspect."
|
||||
new "Ei tutkittavaa."
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:70
|
||||
old "Size"
|
||||
new "Koko"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:74
|
||||
old "Style"
|
||||
new "Tyyli"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:80
|
||||
old "Location"
|
||||
new "Sijainti"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:142
|
||||
old "Inspecting Styles of [displayable_name!q]"
|
||||
new "Tutkitaan [displayable_name!q]n tyylejä"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:155
|
||||
old "displayable:"
|
||||
new "näkyvä objekti:"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:162
|
||||
old " (no properties affect the displayable)"
|
||||
new " (mitkään ominaisuudet eivät vaikuta objektiin)"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:164
|
||||
old " (default properties omitted)"
|
||||
new " (perusominaisuudet sivuutettu)"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:206
|
||||
old "<repr() failed>"
|
||||
new "<repr() epäonnistui>"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/_errorhandling.rpym:451
|
||||
old "An exception has occurred."
|
||||
new "Odottamaton virhe on tapahtunut."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:477
|
||||
old "Rollback"
|
||||
new "Palaa edelliseen tilaan"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:479
|
||||
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
new "Yrittää palata ajassa taaksepäin, antaen sinun tallentaa tai tehdä eri valinnan."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:482
|
||||
old "Ignore"
|
||||
new "Sivuuta"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:484
|
||||
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
|
||||
new "Sivuuttaa poikkeuksen, antaen sinun jatkaa. Tämä johtaa usein uusiin virheisiin."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:487
|
||||
old "Reload"
|
||||
new "Lataa uudelleen"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:489
|
||||
old "Reloads the game from disk, saving and restoring game state if possible."
|
||||
new "Lataa pelin uudelleen muistista, tallentaen ja palauttaen pelitilan jos mahdollista."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:491
|
||||
old "Open Traceback"
|
||||
new "Avaa virheenjäljitystoiminto"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:493
|
||||
old "Opens the traceback.txt file in a text editor."
|
||||
new "Avaa traceback.txt-tiedoston tekstieditorissa."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:499
|
||||
old "Quits the game."
|
||||
new "Lopettaa pelin."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:526
|
||||
old "Parsing the script failed."
|
||||
new "Skriptin jäsennys epäonnistui."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:553
|
||||
old "Open Parse Errors"
|
||||
new "Avaa jäsennysvirheet"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:555
|
||||
old "Opens the errors.txt file in a text editor."
|
||||
new "Avaa errors.txt-tiedoston tekstieditorissa."
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:170
|
||||
old "a"
|
||||
new "a"
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:179
|
||||
old "q"
|
||||
new "q"
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/distribute.rpy:335
|
||||
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
|
||||
new "Ohjelman kokoaminen epäonnistui:\n\nbuild.directory_name -muuttuja ei saa sisältää välilyöntejä, pilkkuja tai puolipilkkuja."
|
||||
|
||||
# game/distribute.rpy:381
|
||||
old "No packages are selected, so there's nothing to do."
|
||||
new "Yhtäkään pakettia ei valittu, joten mitään ei ole tehtävissä."
|
||||
|
||||
# game/distribute.rpy:386
|
||||
old "Scanning project files..."
|
||||
new "Skannataan projektin tiedostoja..."
|
||||
|
||||
# game/distribute.rpy:396
|
||||
old "Scanning Ren'Py files..."
|
||||
new "Skannataan Ren'Py-tiedostoja..."
|
||||
|
||||
# game/distribute.rpy:444
|
||||
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."
|
||||
new "Kaikki paketit on koottu.\n\nLupainformaation läsnäolon vuoksi Linux- ja Macintosh-sovellusten pakkaamista Windows-järjestelmässä ei tueta."
|
||||
|
||||
# game/distribute.rpy:568
|
||||
old "Archiving files..."
|
||||
new "Arkistoidaan tiedostoja..."
|
||||
|
||||
# game/distribute.rpy:832
|
||||
old "Writing the [variant] [format] package."
|
||||
new "Kirjoitetaan [variant] [format]-pakettia."
|
||||
|
||||
# game/distribute.rpy:845
|
||||
old "Making the [variant] update zsync file."
|
||||
new "Luodaan [variant] zsync-päivitystiedostoa."
|
||||
|
||||
# game/distribute.rpy:941
|
||||
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
|
||||
new "Prosessoitu {b}[complete]{/b}/{b}[total]{/b} tiedostoa."
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/distribute_gui.rpy:157
|
||||
old "Build Distributions: [project.current.name!q]"
|
||||
new "Kokoa ohjelma levitykseen: [project.current.name!q]"
|
||||
|
||||
# game/distribute_gui.rpy:171
|
||||
old "Directory Name:"
|
||||
new "Kansion nimi:"
|
||||
|
||||
# game/distribute_gui.rpy:175
|
||||
old "Executable Name:"
|
||||
new "Suoritettavan tiedoston nimi:"
|
||||
|
||||
# game/distribute_gui.rpy:185
|
||||
old "Actions:"
|
||||
new "Toiminnot:"
|
||||
|
||||
# game/distribute_gui.rpy:193
|
||||
old "Edit options.rpy"
|
||||
new "Muokkaa options.rpy-tiedostoa"
|
||||
|
||||
# game/distribute_gui.rpy:194
|
||||
old "Refresh"
|
||||
new "Päivitä"
|
||||
|
||||
# game/distribute_gui.rpy:211
|
||||
old "Build Packages:"
|
||||
new "Kokoa paketteja:"
|
||||
|
||||
# game/distribute_gui.rpy:225
|
||||
old "Build Updates"
|
||||
new "Kokoa päivityksiä"
|
||||
|
||||
# game/distribute_gui.rpy:229
|
||||
old "Build"
|
||||
new "Kokoa"
|
||||
|
||||
# game/distribute_gui.rpy:236
|
||||
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
|
||||
new "Virheitä havaittu projektia suoritettaessa. Varmista, että projekti toimii moitteetta ennen kuin kokoat ohjelman."
|
||||
|
||||
# game/distribute_gui.rpy:253
|
||||
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
|
||||
new "Projektisi ei sisällä kokoamisinformaatiota. Haluatko lisätä kokoamisinormaation options.rpy-tiedoston loppuun?"
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/editor.rpy:150
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
|
||||
new "{b}Suositeltu.{/b} Helppokäyttöinen beta-asteella oleva tekstieditori, joka sisältää kehitystä helpottavia toimintoja. Toistaiseksi Editrasta puuttuu täysin kiinalaisen, japanilaisen ja korealaisen tekstin kannatus."
|
||||
|
||||
# game/editor.rpy:151
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
|
||||
new "{b}Suositeltu.{/b} Helppokäyttöinen beta-asteella oleva tekstieditori, joka sisältää kehitystä helpottavia toimintoja. Toistaiseksi Editrasta puuttuu täysin kiinalaisen, japanilaisen ja korealaisen tekstin kannatus."
|
||||
|
||||
# game/editor.rpy:167
|
||||
old "This may have occured because wxPython is not installed on this system."
|
||||
new "Tämä saattoi tapahtua, koska wxPythonia ei ole asennettu järjestelmään."
|
||||
|
||||
# game/editor.rpy:169
|
||||
old "Up to 22 MB download required."
|
||||
new "22 MB lataus vaaditaan"
|
||||
|
||||
# game/editor.rpy:182
|
||||
old "A mature editor that requires Java."
|
||||
new "Edistynyt editori, joka vaatii Javan."
|
||||
|
||||
# game/editor.rpy:182
|
||||
old "1.8 MB download required."
|
||||
new "1.8 MB lataus vaaditaan."
|
||||
|
||||
# game/editor.rpy:182
|
||||
old "This may have occured because Java is not installed on this system."
|
||||
new "Tämä saattoi tapahtua, koska Javaa ei ole asennettu."
|
||||
|
||||
# game/editor.rpy:191
|
||||
old "Invokes the editor your operating system has associated with .rpy files."
|
||||
new "Käyttää editoria, jota käyttöjärjestelmäsi käyttää .rpy-tiedostojen kanssa."
|
||||
|
||||
# game/editor.rpy:207
|
||||
old "Prevents Ren'Py from opening a text editor."
|
||||
new "Estää Ren'Py-ohjelmaa avaamasta tekstieditoria."
|
||||
|
||||
# game/editor.rpy:359
|
||||
old "An exception occured while launching the text editor:\n[exception!q]"
|
||||
new "Virhe käynnistäessä tekstieditoria:\n[exception!q]"
|
||||
|
||||
# game/editor.rpy:457
|
||||
old "Select Editor"
|
||||
new "Valitse editori"
|
||||
|
||||
# game/editor.rpy:472
|
||||
old "A text editor is the program you'll use to edit Ren'Py script files. Here, you can select the editor Ren'Py will use. If not already present, the editor will be automatically downloaded and installed."
|
||||
new "Tekstieditori on ohjelma, jota käytät Ren'Py-skriptitiedostojen muokkaamiseen. Täällä voit valita, mitä editoria Ren'Py käyttää. Jos valitsemaasi editoria ei vielä ole asennettu, se ladataan ja asennetaan automaattisesti."
|
||||
|
||||
# game/editor.rpy:494
|
||||
old "Cancel"
|
||||
new "Peruuta"
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/front_page.rpy:35
|
||||
old "Open [text] directory."
|
||||
new "Avaa [text] sijainti."
|
||||
|
||||
# game/front_page.rpy:93
|
||||
old "refresh"
|
||||
new "päivitä"
|
||||
|
||||
# game/front_page.rpy:120
|
||||
old "+ Create New Project"
|
||||
new "+ Luo uusi projekti"
|
||||
|
||||
# game/front_page.rpy:132
|
||||
old "Launch Project"
|
||||
new "Käynnistä projekti"
|
||||
|
||||
# game/front_page.rpy:148
|
||||
old "[p.name!q] (template)"
|
||||
new "[p.name!q] (pohja)"
|
||||
|
||||
# game/front_page.rpy:150
|
||||
old "Select project [text]."
|
||||
new "Valitse projekti [text]."
|
||||
|
||||
# game/front_page.rpy:166
|
||||
old "Tutorial"
|
||||
new "Opas"
|
||||
|
||||
# game/front_page.rpy:167
|
||||
old "The Question"
|
||||
new "The Question -esimerkkipeli"
|
||||
|
||||
# game/front_page.rpy:183
|
||||
old "Active Project"
|
||||
new "Aktiivinen projekti"
|
||||
|
||||
# game/front_page.rpy:191
|
||||
old "Open Directory"
|
||||
new "Avaa sijainti"
|
||||
|
||||
# game/front_page.rpy:196
|
||||
old "game"
|
||||
new "game"
|
||||
|
||||
# game/front_page.rpy:197
|
||||
old "base"
|
||||
new "base"
|
||||
|
||||
# game/front_page.rpy:203
|
||||
old "Edit File"
|
||||
new "Muokkaa tiedostoa"
|
||||
|
||||
# game/front_page.rpy:211
|
||||
old "All script files"
|
||||
new "Kaikki skriptitiedostot"
|
||||
|
||||
# game/front_page.rpy:220
|
||||
old "Navigate Script"
|
||||
new "Navigoi skriptiä"
|
||||
|
||||
# game/front_page.rpy:231
|
||||
old "Check Script (Lint)"
|
||||
new "Tarkista skripti (Lint)"
|
||||
|
||||
# game/front_page.rpy:232
|
||||
old "Change Theme"
|
||||
new "Vaihda teemaa"
|
||||
|
||||
# game/front_page.rpy:233
|
||||
old "Delete Persistent"
|
||||
new "Poista pysyvästi tallennettu data"
|
||||
|
||||
# game/front_page.rpy:234
|
||||
old "Force Recompile"
|
||||
new "Pakota uudelleenkokoaminen"
|
||||
|
||||
# game/front_page.rpy:242
|
||||
old "Build Distributions"
|
||||
new "Kokoa jakeluun"
|
||||
|
||||
# game/front_page.rpy:244
|
||||
old "Android"
|
||||
new "Android"
|
||||
|
||||
# game/front_page.rpy:245
|
||||
old "Generate Translations"
|
||||
new "Luo käännöksiä"
|
||||
|
||||
# game/front_page.rpy:246
|
||||
old "Extract Dialogue"
|
||||
new "Kopioi dialogi"
|
||||
|
||||
# game/front_page.rpy:262
|
||||
old "Checking script for potential problems..."
|
||||
new "Tarkista skripti mahdollisten virheiden varalta..."
|
||||
|
||||
# game/front_page.rpy:277
|
||||
old "Deleting persistent data..."
|
||||
new "Poistetaan pysyvästi tallennettua dataa..."
|
||||
|
||||
# game/front_page.rpy:285
|
||||
old "Recompiling all rpy files into rpyc files..."
|
||||
new "Kasataan kaikista .rpy-tiedostoista .rpyc-tiedostoja..."
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/interface.rpy:107
|
||||
old "Documentation"
|
||||
new "Dokumentit"
|
||||
|
||||
# game/interface.rpy:108
|
||||
old "Ren'Py Website"
|
||||
new "Ren'Py:n verkkosivut"
|
||||
|
||||
# game/interface.rpy:109
|
||||
old "Ren'Py Games List"
|
||||
new "Lista Ren'Py-peleistä"
|
||||
|
||||
# game/interface.rpy:110
|
||||
old "About"
|
||||
new "Tietoja"
|
||||
|
||||
# game/interface.rpy:117
|
||||
old "update"
|
||||
new "päivitä"
|
||||
|
||||
# game/interface.rpy:119
|
||||
old "preferences"
|
||||
new "asetukset"
|
||||
|
||||
# game/interface.rpy:120
|
||||
old "quit"
|
||||
new "poistu"
|
||||
|
||||
# game/interface.rpy:192
|
||||
old "Yes"
|
||||
new "Kyllä"
|
||||
|
||||
# game/interface.rpy:194
|
||||
old "No"
|
||||
new "Ei"
|
||||
|
||||
# game/interface.rpy:229
|
||||
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
|
||||
new "Pakettiformaatin rajoitusten vuoksi, ei-ASCII tiedostot ja kansion nimet eivät ole sallittuja."
|
||||
|
||||
# game/interface.rpy:321
|
||||
old "ERROR"
|
||||
new "VIRHE"
|
||||
|
||||
# game/interface.rpy:350
|
||||
old "While [what!q], an error occured:"
|
||||
new "Kun [what!q], tapahtui virhe."
|
||||
|
||||
# game/interface.rpy:350
|
||||
old "[exception!q]"
|
||||
new "[exception!q]"
|
||||
|
||||
# game/interface.rpy:369
|
||||
old "Text input may not contain the {{ or [[ characters."
|
||||
new "Teksti ei voi sisältää {{ tai [[-merkkejä."
|
||||
|
||||
# game/interface.rpy:374
|
||||
old "File and directory names may not contain / or \\."
|
||||
new "Tiedostot ja kansioiden nimet eivät voi sisältää / tai \\-merkkejä."
|
||||
|
||||
# game/interface.rpy:380
|
||||
old "File and directory names must consist of ASCII characters."
|
||||
new "Tiedostojen ja kansioiden nimet saavat koostua vain ASCII-merkeistä."
|
||||
|
||||
# game/interface.rpy:401
|
||||
old "INFORMATION"
|
||||
new "TIETOA"
|
||||
|
||||
# game/interface.rpy:448
|
||||
old "PROCESSING"
|
||||
new "PROSESSOIDAAN"
|
||||
|
||||
# game/interface.rpy:478
|
||||
old "CHOICE"
|
||||
new "VALITSE"
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/navigation.rpy:168
|
||||
old "Navigate: [project.current.name]"
|
||||
new "Navigoi: [project.current.name]"
|
||||
|
||||
# game/navigation.rpy:177
|
||||
old "Order: "
|
||||
new "Järjestys: "
|
||||
|
||||
# game/navigation.rpy:178
|
||||
old "alphabetical"
|
||||
new "aakkosellinen"
|
||||
|
||||
# game/navigation.rpy:180
|
||||
old "by-file"
|
||||
new "tiedoston mukaan"
|
||||
|
||||
# game/navigation.rpy:182
|
||||
old "natural"
|
||||
new "luonnollinen"
|
||||
|
||||
# game/navigation.rpy:194
|
||||
old "Category:"
|
||||
new "Kategoria:"
|
||||
|
||||
# game/navigation.rpy:196
|
||||
old "files"
|
||||
new "tiedostot"
|
||||
|
||||
# game/navigation.rpy:197
|
||||
old "labels"
|
||||
new "tunnukset"
|
||||
|
||||
# game/navigation.rpy:198
|
||||
old "defines"
|
||||
new "määritelmät"
|
||||
|
||||
# game/navigation.rpy:199
|
||||
old "transforms"
|
||||
new "muutokset"
|
||||
|
||||
# game/navigation.rpy:200
|
||||
old "screens"
|
||||
new "ikkunat"
|
||||
|
||||
# game/navigation.rpy:201
|
||||
old "callables"
|
||||
new "kutsuttavat"
|
||||
|
||||
# game/navigation.rpy:202
|
||||
old "TODOs"
|
||||
new "TODO:t"
|
||||
|
||||
# game/navigation.rpy:241
|
||||
old "+ Add script file"
|
||||
new "+ Lisää skriptitiedosto"
|
||||
|
||||
# game/navigation.rpy:249
|
||||
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
|
||||
new "TODO-kommentteja ei löytynyt.\n\nLuodaksesi sellaisen, lisää \"# TODO\" skriptiisi."
|
||||
|
||||
# game/navigation.rpy:256
|
||||
old "The list of names is empty."
|
||||
new "Nimilista on tyhjä."
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/new_project.rpy:40
|
||||
old "Choose Project Template"
|
||||
new "Valitse projektipohja"
|
||||
|
||||
# game/new_project.rpy:58
|
||||
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 "Valitse pohja käytettäväksi uudessa projektissasi. Se asettaa perusfontin ja kielen. Jos kieltäsi ei löydy, valitse englanti (English)."
|
||||
|
||||
# game/new_project.rpy:71
|
||||
old "The projects directory could not be set. Giving up."
|
||||
new "Projektin kansiota ei voitu asettaa."
|
||||
|
||||
# game/new_project.rpy:75
|
||||
old "PROJECT NAME"
|
||||
new "PROJEKTIN NIMI"
|
||||
|
||||
# game/new_project.rpy:75
|
||||
old "Please enter the name of your project:"
|
||||
new "Ole hyvä ja anna projektillesi nimi."
|
||||
|
||||
# game/new_project.rpy:83
|
||||
old "The project name may not be empty."
|
||||
new "Projektin nimi ei voi olla tyhjä."
|
||||
|
||||
# game/new_project.rpy:88
|
||||
old "[project_name!q] already exists. Please choose a different project name."
|
||||
new "[project_name!q] on jo olemassa. Ole hyvä ja valitse toinen nimi projektillesi."
|
||||
|
||||
# game/new_project.rpy:91
|
||||
old "[project_dir!q] already exists. Please choose a different project name."
|
||||
new "[project_dir!q] on jo olemassa. Ole hyvä ja valitse toinen nimi projektillesi."
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/preferences.rpy:61
|
||||
old "Launcher Preferences"
|
||||
new "Työkalun asetukset"
|
||||
|
||||
# game/preferences.rpy:82
|
||||
old "Projects Directory:"
|
||||
new "Projektien kansio"
|
||||
|
||||
# game/preferences.rpy:89
|
||||
old "[persistent.projects_directory!q]"
|
||||
new "[persistent.projects_directory!q]"
|
||||
|
||||
# game/preferences.rpy:91
|
||||
old "Projects directory: [text]"
|
||||
new "Projektikansio: [text]"
|
||||
|
||||
# game/preferences.rpy:93
|
||||
old "Not Set"
|
||||
new "Ei asetettu"
|
||||
|
||||
# game/preferences.rpy:108
|
||||
old "Text Editor:"
|
||||
new "Tekstieditori:"
|
||||
|
||||
# game/preferences.rpy:114
|
||||
old "Text editor: [text]"
|
||||
new "Tekstieditori: [text]"
|
||||
|
||||
# game/preferences.rpy:130
|
||||
old "Update Channel:"
|
||||
new "Päivityskanava:"
|
||||
|
||||
# game/preferences.rpy:150
|
||||
old "Navigation Options:"
|
||||
new "Hakuasetukset"
|
||||
|
||||
# game/preferences.rpy:154
|
||||
old "Include private names"
|
||||
new "Sisällytä yksityiset nimet"
|
||||
|
||||
# game/preferences.rpy:155
|
||||
old "Include library names"
|
||||
new "Sisällytä kirjastot"
|
||||
|
||||
# game/preferences.rpy:165
|
||||
old "Launcher Options:"
|
||||
new "Työkalun asetukset"
|
||||
|
||||
# game/preferences.rpy:169
|
||||
old "Hardware rendering"
|
||||
new "Laitteistorenderöinti"
|
||||
|
||||
# game/preferences.rpy:170
|
||||
old "Show templates"
|
||||
new "Näytä esimerkkipohjat"
|
||||
|
||||
# game/preferences.rpy:171
|
||||
old "Large fonts"
|
||||
new "Suuret fontit"
|
||||
|
||||
# game/preferences.rpy:174
|
||||
old "Console output"
|
||||
new "Konsolisyöte"
|
||||
|
||||
# game/preferences.rpy:195
|
||||
old "Open launcher project"
|
||||
new "Avaa työkaluprojekti"
|
||||
|
||||
# game/preferences.rpy:209
|
||||
old "Language:"
|
||||
new "Kieli:"
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/project.rpy:47
|
||||
old "After making changes to the script, press shift+R to reload your game."
|
||||
new "Kun olet tehnyt muutoksia pelin tiedostoihin, paina shift+R käynnistääksesi pelisi automaattisesti uudelleen."
|
||||
|
||||
# game/project.rpy:47
|
||||
old "Press shift+O (the letter) to access the console."
|
||||
new "Paina shift+O (kirjain) päästäksesi käsiksi konsoliin."
|
||||
|
||||
# game/project.rpy:47
|
||||
old "Press shift+D to access the developer menu."
|
||||
new "Paina shift+D avataksesi kehittäjävalikon."
|
||||
|
||||
# game/project.rpy:47
|
||||
old "Have you backed up your projects recently?"
|
||||
new "Oletko ottanut projekteistasi varmuuskopiot viime aikoina?"
|
||||
|
||||
# game/project.rpy:223
|
||||
old "Launching the project failed."
|
||||
new "Projektin käynnistys epäonnistui."
|
||||
|
||||
# game/project.rpy:223
|
||||
old "Please ensure that your project launches normally before running this command."
|
||||
new "Varmista, että projektisi käynnistyy normaalisti ennen kuin käytät tätä komentoa."
|
||||
|
||||
# game/project.rpy:236
|
||||
old "Ren'Py is scanning the project..."
|
||||
new "Ren'Py skannaa projektia..."
|
||||
|
||||
# game/project.rpy:525
|
||||
old "Launching"
|
||||
new "Käynnistetään..."
|
||||
|
||||
# game/project.rpy:554
|
||||
old "PROJECTS DIRECTORY"
|
||||
new "PROJEKTIKANSIO"
|
||||
|
||||
# game/project.rpy:554
|
||||
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "Ole hyvä ja valitse kansio, jota haluat käyttää projektiesi tallentamiseen.\n{b}Kansion valitsija on saattanut aueta tämän ikkunan taakse.{/b}"
|
||||
|
||||
# game/project.rpy:554
|
||||
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 "Tämä työkalu etsii, luo sekä muokkaa projekteja, jotka löytyvät tästä kansiosta."
|
||||
|
||||
# game/project.rpy:594
|
||||
old "Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."
|
||||
new "Ren'Py ei kyennyt käyttämään pythonia tkinterillä valitakseen projektikansion. Ole hyvä ja asenna python-tk tai tkinter-paketti."
|
||||
|
||||
# game/project.rpy:604
|
||||
old "Ren'Py has set the projects directory to:"
|
||||
new "Ren'Py on valinnut projektikansioksi:"
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/translations.rpy:31
|
||||
old "Create or Update Translations"
|
||||
new "Luo tai päivitä käännöksiä"
|
||||
|
||||
# game/translations.rpy:31
|
||||
old "Please enter the name of the language for which you want to create or update translations."
|
||||
new "Ole hyvä ja anna sen kielen nimi, jolle haluat luoda tai päivittää käännöksen."
|
||||
|
||||
# game/translations.rpy:36
|
||||
old "The language name can not be the empty string."
|
||||
new "Kielen nimi ei voi olla tyhjä."
|
||||
|
||||
# game/translations.rpy:47
|
||||
old "Ren'Py is generating translations...."
|
||||
new "Ren'Py luo käännöksiä...."
|
||||
|
||||
# game/translations.rpy:51
|
||||
old "Ren'Py has finished generating [language] translations."
|
||||
new "Ren'Py on onnistuneesti luonut [language] käännöstiedostot."
|
||||
|
||||
# game/translations.rpy:64
|
||||
old "What format would you like for the extracted dialogue?"
|
||||
new "Millä formaatilla haluat kopioida dialogin?"
|
||||
|
||||
# game/translations.rpy:77
|
||||
old "Ren'Py is extracting dialogue...."
|
||||
new "Ren'Py kopioi dialogia...."
|
||||
|
||||
# game/translations.rpy:81
|
||||
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[format] in the base directory."
|
||||
new "Ren'Py on onnistuneesti kopioinut dialogin. Kopio löytyy tiedostosta dialogue.[format] projektin kansiosta."
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Select Update Channel"
|
||||
new "Valitse päivityskanava"
|
||||
|
||||
# game/updater.rpy:89
|
||||
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
|
||||
new "Päivityskanava vaikuttaa siihen, mihin versioon Ren'Py päivitetään. Valitse päivityskanava:"
|
||||
|
||||
# game/updater.rpy:94
|
||||
old "Release"
|
||||
new "Versio"
|
||||
|
||||
# game/updater.rpy:100
|
||||
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
|
||||
new "{b}Suositeltu.{/b} Ren'Py:n uusin, vakaa versio, jota suositellaan käytettäväksi."
|
||||
|
||||
# game/updater.rpy:105
|
||||
old "Prerelease"
|
||||
new "Esiversiot"
|
||||
|
||||
# game/updater.rpy:111
|
||||
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 "Ennakkoversio Ren'Py:n seuraavasta versiosta, jota voidaan käyttää uusien ominaisuuksien testaamiseen ja hyödyntämiseen. Ei suositella pelien julkaisemiseen."
|
||||
|
||||
# game/updater.rpy:117
|
||||
old "Experimental"
|
||||
new "Kokeelliset versiot"
|
||||
|
||||
# game/updater.rpy:123
|
||||
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
|
||||
new "Ren'Py:n kokeellisia versioita. Sinun ei kannata valita tätä, ellei joku Ren'Py:n kehittäjistä erikseen sitä pyydä."
|
||||
|
||||
# game/updater.rpy:129
|
||||
old "Nightly"
|
||||
new "Jokaöiset julkaisut"
|
||||
|
||||
# game/updater.rpy:135
|
||||
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
|
||||
new "Upouudet Ren'Py-kehitysjulkaisut. Voi sisältää uusimmat toiminnot, tai ei ehkä toimi lainkaan."
|
||||
|
||||
# game/updater.rpy:155
|
||||
old "An error has occured:"
|
||||
new "On tapahtunut virhe:"
|
||||
|
||||
# game/updater.rpy:157
|
||||
old "Checking for updates."
|
||||
new "Haetaan päivityksiä."
|
||||
|
||||
# game/updater.rpy:159
|
||||
old "Ren'Py is up to date."
|
||||
new "Käytät uusinta Ren'Py-versiota."
|
||||
|
||||
# game/updater.rpy:161
|
||||
old "[u.version] is now available. Do you want to install it?"
|
||||
new "[u.version] on nyt saatavilla. Haluatko asentaa sen?"
|
||||
|
||||
# game/updater.rpy:163
|
||||
old "Preparing to download the update."
|
||||
new "Valmistellaan päivityksen lataamista."
|
||||
|
||||
# game/updater.rpy:165
|
||||
old "Downloading the update."
|
||||
new "Ladataan päivitystä."
|
||||
|
||||
# game/updater.rpy:167
|
||||
old "Unpacking the update."
|
||||
new "Puretaan päivitystä."
|
||||
|
||||
# game/updater.rpy:169
|
||||
old "Finishing up."
|
||||
new "Viimeistellään asennusta."
|
||||
|
||||
# game/updater.rpy:171
|
||||
old "The update has been installed. Ren'Py will restart."
|
||||
new "Päivitys on nyt asennettu. Ren'Py käynnistyy nyt uudelleen."
|
||||
|
||||
# game/updater.rpy:173
|
||||
old "The update has been installed."
|
||||
new "Päivitys on asennettu."
|
||||
|
||||
# game/updater.rpy:175
|
||||
old "The update was cancelled."
|
||||
new "Päivitys peruttiin."
|
||||
|
||||
# game/updater.rpy:192
|
||||
old "Ren'Py Update"
|
||||
new "Ren'Py-päivitys"
|
||||
|
||||
# game/updater.rpy:198
|
||||
old "Proceed"
|
||||
new "Jatka"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#translation: renpy/common/00action_file.rpy
|
||||
#translation: renpy/common/00action_file.rpy
|
||||
translate italian strings:
|
||||
|
||||
# renpy/common/00action_file.rpy:124
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate italian strings:
|
||||
translate italian strings:
|
||||
|
||||
# game/distribute.rpy:358
|
||||
old "No packages are selected, so there's nothing to do."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate italian strings:
|
||||
translate italian strings:
|
||||
|
||||
# game/new_project.rpy:22
|
||||
old "Choose Project Template"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate italian strings:
|
||||
translate italian strings:
|
||||
|
||||
# game/project.rpy:201
|
||||
old "Launching the project failed."
|
||||
|
||||
@@ -3,11 +3,11 @@ translate japanese strings:
|
||||
|
||||
# game/android.rpy:12
|
||||
old "To build Android packages, please download RAPT (from {a=http://www.renpy.org/dl/android}here{/a}), unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "Androidパッケージをビルドするためには{a=http://www.renpy.org/dl/android}RAPT{/a}をダウンロードして解凍し、Ren'Py ディレクトリーに配置してからランチャーを再起動してください。"
|
||||
new "Androidパッケージをビルドするためには{a=http://www.renpy.org/dl/android}RAPT{/a}をダウンロードして解凍し、Ren'Py ディレクトリーに配置してランチャーを再起動してください。"
|
||||
|
||||
# game/android.rpy:13
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
new "RAPT はインストールされましたが、Androidパッケージをビルドする前に Android SDK もインストールする必要があります。このためにSDKをインストールしてください。"
|
||||
new "RAPT はインストールされましたが、Androidパッケージをビルドする前に Android SDK もインストールする必要があります。SDKをインストールしてください。"
|
||||
|
||||
# game/android.rpy:14
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
@@ -15,7 +15,7 @@ translate japanese strings:
|
||||
|
||||
# game/android.rpy:15
|
||||
old "The current project has not been configured. Use \"Configure\" to configure it before building."
|
||||
new "現在のプロジェクトは設定されていません。「設定」を利用してビルド前に設定してください。"
|
||||
new "現在のプロジェクトは設定がされていません。「設定」を使用してビルド前に設定してください。"
|
||||
|
||||
# game/android.rpy:16
|
||||
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
|
||||
@@ -23,23 +23,23 @@ translate japanese strings:
|
||||
|
||||
# game/android.rpy:18
|
||||
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Android Phoneをエミュレートします。\n\nタッチ入力はマウスを利用してエミュレートされますが、ボタン押下時のみです。Escapeはメニューボタン、PageUpはバックボタンにマップされています。"
|
||||
new "Android Phoneをエミュレートします。\n\nタッチ入力はマウスを利用してエミュレートされますが、ボタン押下時のみ反応します。Escapeはメニューボタン、PageUpはバックボタンに割り当てられています。"
|
||||
|
||||
# game/android.rpy:19
|
||||
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Android tabletをエミュレートします。\n\nタッチ入力はマウスを利用してエミュレートされますが、ボタン押下時のみです。Escapeはメニューボタン、PageUpはバックボタンにマップされています。"
|
||||
new "Android tabletをエミュレートします。\n\nタッチ入力はマウスを利用してエミュレートされますが、ボタン押下時のみ反応します。Escapeはメニューボタン、PageUpはバックボタンに割り当てられています。"
|
||||
|
||||
# game/android.rpy:20
|
||||
old "Attempts to emulate an OUYA console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Android OUYAをエミュレートします。\n\nコントローラーの入力は矢印キー、Enterはセレクトボタン、Escapeはメニューボタン、PageUpはバックボタンにマップされています。"
|
||||
new "Android OUYAをエミュレートします。\n\nコントローラーの入力は矢印キー、Enterはセレクトボタン、Escapeはメニューボタン、PageUpはバックボタンに割り当てられています。"
|
||||
|
||||
# game/android.rpy:22
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "Android SDKをダウンロード後インストールします。任意でサインに必要なキーを生成します。"
|
||||
new "Android SDKをダウンロード後インストールします。サインに必要なキーを任意で生成します。"
|
||||
|
||||
# game/android.rpy:23
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
new "このプロジェクトについてパッケージ名、バージョン、その他の情報を設定してください。"
|
||||
new "このプロジェクトについてパッケージ名とバージョン、その他の情報を設定してください。"
|
||||
|
||||
# game/android.rpy:24
|
||||
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
|
||||
@@ -115,7 +115,7 @@ translate japanese strings:
|
||||
|
||||
# game/android.rpy:39
|
||||
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "OUYAやFire TVのようなテレビで動作する Android デバイスをエミュレートします。\n\nコントローラーの入力は矢印キー、Enterはセレクトボタン、Escapeはメニューボタン、PageUpはバックボタンにマップされています。"
|
||||
new "OUYAやFire TVのようなテレビで動作する Android デバイスをエミュレートします。\n\nコントローラーの入力は矢印キー、Enterはセレクトボタン、Escapeはメニューボタン、PageUpはバックボタンに割り当てられています。"
|
||||
|
||||
# game/android.rpy:47
|
||||
old "Connects to an Android device running ADB in TCP/IP mode."
|
||||
@@ -161,3 +161,15 @@ translate japanese strings:
|
||||
old "The port must be a number."
|
||||
new "ポートは数字でなければなりません。"
|
||||
|
||||
# game/android.rpy:46
|
||||
old "Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device."
|
||||
new "Android パッケージをビルドして、接続された Android にインストール、 そのデバイスでアプリを起動します。"
|
||||
|
||||
# game/android.rpy:288
|
||||
old "Television"
|
||||
new "Television"
|
||||
|
||||
# game/android.rpy:324
|
||||
old "Build, Install & Launch"
|
||||
new "ビルドとインストール、起動"
|
||||
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# game/choose_directory.rpy:73
|
||||
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
|
||||
new "Ren'Py は tkinter でディレクトリーを選択出来ません。 python-tk か tkinter をインストールしてください。"
|
||||
|
||||
Regular → Executable
+539
-499
File diff suppressed because it is too large
Load Diff
@@ -45,3 +45,19 @@ translate japanese strings:
|
||||
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
|
||||
new "プロジェクトにビルド情報がありません。options.rpy の末尾にビルド情報を追加しますか?"
|
||||
|
||||
# game/distribute_gui.rpy:194
|
||||
old "Add from clauses to calls, once"
|
||||
new "from 節を call に加える"
|
||||
|
||||
# game/distribute_gui.rpy:231
|
||||
old "Options:"
|
||||
new "設定:"
|
||||
|
||||
# game/distribute_gui.rpy:238
|
||||
old "Add from clauses to calls"
|
||||
new "from 節を call ステートメントに加える"
|
||||
|
||||
# game/distribute_gui.rpy:246
|
||||
old "Adding from clauses to call statements that do not have them."
|
||||
new "from 節がない call ステートメントに from 節を加えています"
|
||||
|
||||
|
||||
@@ -105,3 +105,7 @@ translate japanese strings:
|
||||
old "Recompiling all rpy files into rpyc files..."
|
||||
new "すべての rpy ファイルを rpyc ファイルにコンパイルしています。"
|
||||
|
||||
# game/front_page.rpy:245
|
||||
old "iOS"
|
||||
new "iOS"
|
||||
|
||||
|
||||
Executable
+99
@@ -0,0 +1,99 @@
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# game/ios.rpy:28
|
||||
old "To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "iOS パッケージをビルドするには、 renios をダウンロードして、Ren'Py ディレクトリーに配置、ランチャーを再起動してください。"
|
||||
|
||||
# game/ios.rpy:29
|
||||
old "The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it."
|
||||
new "'Select Directory' から、 xcode プロジェクトが配置されるディレクトリーを選択してください。"
|
||||
|
||||
# game/ios.rpy:30
|
||||
old "There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one."
|
||||
new "現在の Ren'Py プロジェクトに対応する Xcode プロジェクトがありません。'Create Xcode Project' から作成してください。"
|
||||
|
||||
# game/ios.rpy:31
|
||||
old "An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it."
|
||||
new "Xcode プロジェクトが存在します。'Update Xcode Project' を選択して最新のゲームファイルに更新するか、 Xcode を使用してそれをビルド、インストールしてください。"
|
||||
|
||||
# game/ios.rpy:33
|
||||
old "Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down."
|
||||
new "iPhone をエミュレートします。\n\nタッチ入力はマウスを利用してエミュレートされますが、ボタン押下時のみ反応します"
|
||||
|
||||
# game/ios.rpy:34
|
||||
old "Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down."
|
||||
new "iPad をエミュレートします。\n\nタッチ入力はマウスを利用してエミュレートされますが、ボタン押下時のみ反応します"
|
||||
|
||||
# game/ios.rpy:36
|
||||
old "Selects the directory where Xcode projects will be placed."
|
||||
new "Xcode プロジェクトが配置されるディレクトリーを選択します。"
|
||||
|
||||
# game/ios.rpy:37
|
||||
old "Creates an Xcode project corresponding to the current Ren'Py project."
|
||||
new "現在の Ren'PY プロジェクトに対応する Xcode プロジェクトを作成します。"
|
||||
|
||||
# game/ios.rpy:38
|
||||
old "Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes."
|
||||
new "最新のゲームファイルに Xcode プロジェクトを更新します。これは Ren'Py プロジェクトが変更される度に行わなければなりません。"
|
||||
|
||||
# game/ios.rpy:39
|
||||
old "Opens the Xcode project in Xcode."
|
||||
new "Xcode から Xcode プロジェクトを開きます。"
|
||||
|
||||
# game/ios.rpy:41
|
||||
old "Opens the directory containing Xcode projects."
|
||||
new "対応する Xcode プロジェクトを開きます。"
|
||||
|
||||
# game/ios.rpy:126
|
||||
old "The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"
|
||||
new "その Xcode プロジェクトは既に存在します。古いプロジェクトをリネームするか、新しいもので置き換えますか?"
|
||||
|
||||
# game/ios.rpy:202
|
||||
old "iOS: [project.current.name!q]"
|
||||
new "iOS: [project.current.name!q]"
|
||||
|
||||
# game/ios.rpy:231
|
||||
old "iPhone"
|
||||
new "iPhone"
|
||||
|
||||
# game/ios.rpy:235
|
||||
old "iPad"
|
||||
new "iPad"
|
||||
|
||||
# game/ios.rpy:255
|
||||
old "Select Xcode Projects Directory"
|
||||
new "Xcode プロジェクトディレクトリーを選択してください。"
|
||||
|
||||
# game/ios.rpy:259
|
||||
old "Create Xcode Project"
|
||||
new "Xcode プロジェクトを作成してください。"
|
||||
|
||||
# game/ios.rpy:263
|
||||
old "Update Xcode Project"
|
||||
new "Xcode プロジェクトを更新してください。"
|
||||
|
||||
# game/ios.rpy:268
|
||||
old "Launch Xcode"
|
||||
new "Xcode 起動"
|
||||
|
||||
# game/ios.rpy:303
|
||||
old "Open Xcode Projects Directory"
|
||||
new "Xcode プロジェクトディレクトリーを開いてください。"
|
||||
|
||||
# game/ios.rpy:336
|
||||
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
|
||||
new "iOS アプリをパッケージする前に、reniosをダウンロードする必要があります。 renios をダウンロードしますか?"
|
||||
|
||||
# game/ios.rpy:345
|
||||
old "XCODE PROJECTS DIRECTORY"
|
||||
new "XCODE PROJECTS DIRECTORY"
|
||||
|
||||
# game/ios.rpy:345
|
||||
old "Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "Xcode プロジェクトディレクトリーを選択してください。\n{b}ディレクトリー選択ウィンドウはこのウィンドウの裏に開くかもしれません。{/b}"
|
||||
|
||||
# game/ios.rpy:350
|
||||
old "Ren'Py has set the Xcode Projects Directory to:"
|
||||
new "Ren'Py は Xcode プロジェクトディレクトリーを以下に設定しました。:"
|
||||
|
||||
@@ -73,3 +73,11 @@ translate japanese strings:
|
||||
old "Text editor: [text]"
|
||||
new "テキストエディター: [text]"
|
||||
|
||||
# game/preferences.rpy:174
|
||||
old "Show edit file section"
|
||||
new "ファイル編集を表示する"
|
||||
|
||||
# game/preferences.rpy:176
|
||||
old "Generate empty strings for translations"
|
||||
new "空の文字列でも翻訳を生成する"
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/about.rpy:39
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/add_file.rpy:28
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/android.rpy:30
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/choose_theme.rpy:292
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# renpy/common/00action_file.rpy:142
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/distribute.rpy:335
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/distribute_gui.rpy:157
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/editor.rpy:150
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/front_page.rpy:89
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/interface.rpy:107
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
|
||||
translate Korean strings:
|
||||
|
||||
# game/ios.rpy:28
|
||||
old "To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "iOS 배포판을 만드시려면 renios 패키지를 다운받으신 후, 렌'파이 디렉터리에 압축을 해제해 주세요. 그 다음, 렌'파이를 재시작해주시기 바랍니다."
|
||||
|
||||
# game/ios.rpy:29
|
||||
old "The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it."
|
||||
new "Xcode 프로젝트가 생성될 폴더가 지정되지 않았습니다. '경로 선택' 버튼을 눌러 경로를 선택해 주세요."
|
||||
|
||||
# game/ios.rpy:30
|
||||
old "There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one."
|
||||
new "현재 렌'파이 프로젝트에 대응하는 Xcode 프로젝트가 없습니다. 'Xcode 프로젝트 만들기'를 눌러 프로젝트를 만들어 주세요."
|
||||
|
||||
# game/ios.rpy:31
|
||||
old "An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it."
|
||||
new "이미 Xcode 프로젝트가 존재합니다. 'Xcode 프로젝트 업데이트'를 눌러 프로젝트를 최신 파일로 업데이트하거나, Xcode를 이용해 프로젝트를 빌드하세요."
|
||||
|
||||
# game/ios.rpy:33
|
||||
old "Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down."
|
||||
new "iPhone 에뮬레이션을 시도합니다.\n\n터치 입력은 마우스로 대체합니다. 그러나 마우스를 클릭할 때만 활성화됩니다."
|
||||
|
||||
# game/ios.rpy:34
|
||||
old "Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down."
|
||||
new "iPad 에뮬레이션을 시도합니다.\n\n터치 입력은 마우스로 대체합니다. 그러나 마우스를 클릭할 때만 활성화됩니다."
|
||||
|
||||
# game/ios.rpy:36
|
||||
old "Selects the directory where Xcode projects will be placed."
|
||||
new "Xcode 프로젝트가 위치할 디렉토리를 선택합니다."
|
||||
|
||||
# game/ios.rpy:37
|
||||
old "Creates an Xcode project corresponding to the current Ren'Py project."
|
||||
new "현재 프로젝트에 대응하는 Xcode 프로젝트를 만듭니다."
|
||||
|
||||
# game/ios.rpy:38
|
||||
old "Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes."
|
||||
new "Xcode 프로젝트 파일을 최신 게임 파일으로 업데이트합니다. 이 작업은 프로젝트에 변경 사항이 생길 때마다 행해져야 합니다."
|
||||
|
||||
# game/ios.rpy:39
|
||||
old "Opens the Xcode project in Xcode."
|
||||
new "Xcode에서 Xcode 프로젝트를 엽니다."
|
||||
|
||||
# game/ios.rpy:41
|
||||
old "Opens the directory containing Xcode projects."
|
||||
new "Xcode 프로젝트가 있는 디렉토리를 엽니다."
|
||||
|
||||
# game/ios.rpy:126
|
||||
old "The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"
|
||||
new "Xcode 프로젝트가 이미 존재합니다. 이전 프로젝트의 이름을 바꾸고 새 프로젝트 파일로 교체하시겠습니까?"
|
||||
|
||||
# game/ios.rpy:200
|
||||
old "iOS: [project.current.name!q]"
|
||||
new ""
|
||||
|
||||
# game/ios.rpy:229
|
||||
old "iPhone"
|
||||
new ""
|
||||
|
||||
# game/ios.rpy:233
|
||||
old "iPad"
|
||||
new ""
|
||||
|
||||
# game/ios.rpy:253
|
||||
old "Select Xcode Projects Directory"
|
||||
new "경로 선택"
|
||||
|
||||
# game/ios.rpy:257
|
||||
old "Create Xcode Project"
|
||||
new "Xcode 프로젝트 만들기"
|
||||
|
||||
# game/ios.rpy:261
|
||||
old "Update Xcode Project"
|
||||
new "Xcode 프로젝트 업데이트"
|
||||
|
||||
# game/ios.rpy:266
|
||||
old "Launch Xcode"
|
||||
new "Xcode 실행하기"
|
||||
|
||||
# game/ios.rpy:301
|
||||
old "Open Xcode Projects Directory"
|
||||
new "Xcode 프로젝트 디렉토리 열기"
|
||||
|
||||
# game/ios.rpy:334
|
||||
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
|
||||
new "iOS 앱을 패키징하기 전, renios(Ren'Py's iOS Support)를 다운로드할 필요가 있습니다. 지금 다운로드하시겠습니까?"
|
||||
|
||||
# game/ios.rpy:343
|
||||
old "XCODE PROJECTS DIRECTORY"
|
||||
new "Xcode 프로젝트 경로"
|
||||
|
||||
# game/ios.rpy:343
|
||||
old "Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "디렉토리 선택창을 이용하여 Xcode 프로젝트 경로를 선택하세요.\n{b}디렉토리 선택창이 이 창의 뒤에서 열렸을 수도 있습니다."
|
||||
|
||||
# game/ios.rpy:348
|
||||
old "Ren'Py has set the Xcode Projects Directory to:"
|
||||
new "렌'파이가 Xcode 프로젝트 경로를 다음과 같이 설정했습니다:"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/navigation.rpy:168
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/new_project.rpy:40
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/preferences.rpy:58
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/project.rpy:48
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate korean python:
|
||||
translate korean python:
|
||||
|
||||
NANUM = "tl/korean/NanumGothic.ttf"
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/translations.rpy:31
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2014-05-02 21:49
|
||||
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/updater.rpy:78
|
||||
|
||||
@@ -1,12 +1 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
old "[version!q]"
|
||||
new "[version!q]"
|
||||
|
||||
# game/about.rpy:25
|
||||
old "View license"
|
||||
new "Просмотреть лицензию"
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/add_file.rpy:7
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user