Compare commits
150 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5534516253 | |||
| a445a7b000 | |||
| 601594e047 | |||
| cedff0527f | |||
| 2b1f812051 | |||
| c85c917d12 | |||
| f2040ea6d5 | |||
| 7602e726f2 | |||
| dce59141a7 | |||
| 8dfafd617b | |||
| a28829662c | |||
| 9665ee9226 | |||
| b79419ea2f | |||
| b2787cc61d | |||
| 8c45a9a1ec | |||
| fc45dca4c8 | |||
| be4d4290a8 | |||
| 59c49a6512 | |||
| 6fedb10d30 | |||
| 5eb650d3fb | |||
| 8c2d509b9c | |||
| 1eee09bb9e | |||
| bacc645355 | |||
| db83f8462d | |||
| 4ee3026cad | |||
| cc6594d068 | |||
| 3469504ffd | |||
| 7954d1d9cd | |||
| 8706d19545 | |||
| 666370ac7f | |||
| 88722cc03b | |||
| 64171052ac | |||
| 793a2b2250 | |||
| d16e1e71b8 | |||
| cf56ebc008 | |||
| 26166cfdd8 | |||
| c5f60655d3 | |||
| 0ef5e6650e | |||
| 036bdc4afe | |||
| 33d8c014ec | |||
| 1b193e6884 | |||
| d6b7786f60 | |||
| a1bcb09260 | |||
| d05704c7c7 | |||
| 68af2f3db2 | |||
| 9b6ab94970 | |||
| 51abcae5d4 | |||
| 79e9d81173 | |||
| 4e60a996dd | |||
| 15738d1dfb | |||
| c37c44d227 | |||
| 045b6cc227 | |||
| 56f86495fb | |||
| 576b02d124 | |||
| b5b7673e8b | |||
| 455274bbaa | |||
| 0b492357d9 | |||
| fb0149d0dc | |||
| e7184c3a11 | |||
| 963dba7cc6 | |||
| 087f618326 | |||
| 4c2be41c63 | |||
| d23d5d91e3 | |||
| 7f8a07a8a5 | |||
| 173eaf6029 | |||
| 8d0830f66f | |||
| 584f7a0be7 | |||
| e210147343 | |||
| e4b33e595a | |||
| 53d08e0f2d | |||
| 84c53d3d9c | |||
| 2962b5c398 | |||
| 0ebfae81c9 | |||
| 5dc0372228 | |||
| 82780c57ee | |||
| 305215823d | |||
| 38440bf843 | |||
| 3596a59a54 | |||
| 5aaf1f8ef4 | |||
| 398c8a3053 | |||
| cfa560d8fa | |||
| 46fe772cc5 | |||
| 9149a5c941 | |||
| ce50d6e3f1 | |||
| f015cda018 | |||
| 069ac8e6c3 | |||
| e2ad4d5a3c | |||
| 3239f0d5bb | |||
| 7ac80c1a4f | |||
| eda749e44a | |||
| 5da79e86ae | |||
| dc73065241 | |||
| 55992074c1 | |||
| ba79f7986c | |||
| 5a0e3da293 | |||
| d7a2bd7bdf | |||
| aa43d1828a | |||
| 21d90dbd55 | |||
| 4b8026fdd7 | |||
| 73b8629724 | |||
| 79f0037afc | |||
| 49c92600bf | |||
| f594f51ada | |||
| 254c5b6a2a | |||
| 7568ae3146 | |||
| 1d7f7353c8 | |||
| ad4756039d | |||
| dc30cc39aa | |||
| 2720ab3615 | |||
| d7a8c5fb96 | |||
| 49baa6e6cb | |||
| b5abd9f4c4 | |||
| 98d104b9ec | |||
| f5e001ac99 | |||
| fe2ccc43e2 | |||
| 030d9d2dbf | |||
| 011c3147dc | |||
| c0281a41de | |||
| 02ded280af | |||
| d6ba807878 | |||
| 8dc57697bf | |||
| 3c12d7ddb5 | |||
| c851968def | |||
| 626a5b03a1 | |||
| 7da19e215f | |||
| 7a11cb35eb | |||
| d2981c59cd | |||
| e4aa46e7fe | |||
| c56aea9dc8 | |||
| 86bab3977e | |||
| 2b03eb6c39 | |||
| 7f33118758 | |||
| 7b1e96300f | |||
| 0f00705da7 | |||
| 69f3c01442 | |||
| f205b611b5 | |||
| 8266095feb | |||
| e2843c06ba | |||
| 5870b6cd1f | |||
| a7471bba03 | |||
| 44c11a7803 | |||
| 19f69717de | |||
| 5a7856cb26 | |||
| 78c61e45c5 | |||
| 782f89510b | |||
| 927370ebfc | |||
| 9eb1c06659 | |||
| 8f1d3636d5 | |||
| 07886362c5 | |||
| 85c58d5220 |
@@ -54,6 +54,7 @@ def main():
|
||||
ap.add_argument("--variant", action="store")
|
||||
ap.add_argument("--sign", action="store_true", default=True)
|
||||
ap.add_argument("--nosign", action="store_false", dest="sign")
|
||||
ap.add_argument("--vc-version-only", action="store_true")
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
@@ -86,6 +87,9 @@ def main():
|
||||
with open("renpy/vc_version.py", "w") as f:
|
||||
f.write("vc_version = {}".format(vc_version))
|
||||
|
||||
if args.vc_version_only:
|
||||
return
|
||||
|
||||
try:
|
||||
reload(sys.modules['renpy.vc_version']) # @UndefinedVariable
|
||||
except:
|
||||
|
||||
@@ -373,7 +373,7 @@ init python in distribute:
|
||||
This manages the process of building distributions.
|
||||
"""
|
||||
|
||||
def __init__(self, project, destination=None, reporter=None, packages=None, build_update=True, open_directory=False, noarchive=False, packagedest=None, report_success=True):
|
||||
def __init__(self, project, destination=None, reporter=None, packages=None, build_update=True, open_directory=False, noarchive=False, packagedest=None, report_success=True, scan=True):
|
||||
"""
|
||||
Distributes `project`.
|
||||
|
||||
@@ -441,8 +441,9 @@ init python in distribute:
|
||||
# dictionaries.
|
||||
data = project.data
|
||||
|
||||
self.reporter.info(_("Scanning project files..."))
|
||||
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
|
||||
if scan:
|
||||
self.reporter.info(_("Scanning project files..."))
|
||||
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
|
||||
|
||||
if project.dump.get("error", False):
|
||||
raise Exception("Could not get build data from the project. Please ensure the project runs.")
|
||||
@@ -523,6 +524,10 @@ init python in distribute:
|
||||
# Build the mac app and windows exes.
|
||||
self.add_mac_files()
|
||||
self.add_windows_files()
|
||||
self.add_main_py()
|
||||
|
||||
# Add the main.py.
|
||||
self.add_main_py()
|
||||
|
||||
# Add generated/special files.
|
||||
if build['renpy']:
|
||||
@@ -805,6 +810,7 @@ init python in distribute:
|
||||
|
||||
self.add_file_list_hash("rapt")
|
||||
self.add_file_list_hash("renios")
|
||||
self.add_file_list_hash("web")
|
||||
|
||||
tmp_fn = self.temp_filename("renpy.py")
|
||||
|
||||
@@ -965,7 +971,7 @@ init python in distribute:
|
||||
old_exe_fn = os.path.join(config.renpy_base, "renpy.exe")
|
||||
old_main_fn = os.path.join(config.renpy_base, "lib/windows-i686/renpy.exe")
|
||||
|
||||
if os.path.exists(icon_fn):
|
||||
if os.path.exists(icon_fn) and os.path.exists(old_exe_fn):
|
||||
exe_fn = self.temp_filename("renpy.exe")
|
||||
main_fn = self.temp_filename("main.exe")
|
||||
|
||||
@@ -979,8 +985,16 @@ init python in distribute:
|
||||
exe_fn = old_exe_fn
|
||||
main_fn = old_main_fn
|
||||
|
||||
self.add_file(windows, self.exe, exe_fn)
|
||||
self.add_file(windows, "lib/windows-i686/" + self.exe, main_fn)
|
||||
if os.path.exists(exe_fn):
|
||||
self.add_file(windows, self.exe, exe_fn)
|
||||
self.add_file(windows, "lib/windows-i686/" + self.exe, main_fn)
|
||||
|
||||
def add_main_py(self):
|
||||
if self.build['renpy']:
|
||||
return
|
||||
|
||||
self.add_file("web", "main.py", os.path.join(config.renpy_base, "renpy.py"))
|
||||
|
||||
|
||||
def mark_executable(self):
|
||||
"""
|
||||
|
||||
@@ -249,6 +249,7 @@ screen front_page_project:
|
||||
|
||||
textbutton _("Android") action Jump("android")
|
||||
textbutton _("iOS") action Jump("ios")
|
||||
textbutton _("Web") + " " + _("(Beta)") action Jump("web")
|
||||
textbutton _("Generate Translations") action Jump("translate")
|
||||
textbutton _("Extract Dialogue") action Jump("extract_dialogue")
|
||||
|
||||
|
||||
@@ -109,10 +109,10 @@ init 1 python:
|
||||
SEPARATOR = Frame(PATTERN, 0, 0, tile=True, ymaximum=5, yalign=1.0)
|
||||
SEPARATOR2 = Frame(PATTERN, 0, 0, tile=True, ymaximum=10, yalign=1.0)
|
||||
|
||||
SPACER_HEIGHT = 12
|
||||
SPACER_HEIGHT = 8
|
||||
SPACER = Null(height=SPACER_HEIGHT)
|
||||
|
||||
HALF_SPACER_HEIGHT = 6
|
||||
HALF_SPACER_HEIGHT = 4
|
||||
HALF_SPACER = Null(height=HALF_SPACER_HEIGHT)
|
||||
|
||||
# DIVIDING THE SCREEN
|
||||
|
||||
@@ -647,4 +647,91 @@ translate spanish strings:
|
||||
|
||||
# 00gallery.rpy:596
|
||||
old "return"
|
||||
new "volver"
|
||||
new "volver"
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# 00accessibility.rpy:76
|
||||
old "Font Override"
|
||||
new "Invalidar Fuente"
|
||||
|
||||
# 00accessibility.rpy:80
|
||||
old "Default"
|
||||
new "por Defecto"
|
||||
|
||||
# 00accessibility.rpy:84
|
||||
old "DejaVu Sans"
|
||||
new "DejaVu Sans"
|
||||
|
||||
# 00accessibility.rpy:88
|
||||
old "Opendyslexic"
|
||||
new "Opendyslexic"
|
||||
|
||||
# 00accessibility.rpy:94
|
||||
old "Text Size Scaling"
|
||||
new "Tamaño de la Escala del Texto"
|
||||
|
||||
# 00accessibility.rpy:100
|
||||
old "Reset"
|
||||
new "Reiniciar"
|
||||
|
||||
# 00accessibility.rpy:105
|
||||
old "Line Spacing Scaling"
|
||||
new "Escalado del espaciado de línea"
|
||||
|
||||
# 00accessibility.rpy:117
|
||||
old "Self-Voicing"
|
||||
new "Voz-automática"
|
||||
|
||||
# 00accessibility.rpy:121
|
||||
old "Off"
|
||||
new "Apagado"
|
||||
|
||||
# 00accessibility.rpy:125
|
||||
old "Text-to-speech"
|
||||
new "Texto a voz"
|
||||
|
||||
# 00accessibility.rpy:129
|
||||
old "Clipboard"
|
||||
new "Potapapeles"
|
||||
|
||||
# 00accessibility.rpy:133
|
||||
old "Debug"
|
||||
new "Depurar"
|
||||
|
||||
# 00action_file.rpy:434
|
||||
old "Load slot %s: [text]"
|
||||
new "Cargar ranura %s: [text]"
|
||||
|
||||
# 00preferences.rpy:430
|
||||
old "font transform"
|
||||
new "transformación de fuente"
|
||||
|
||||
# 00preferences.rpy:433
|
||||
old "font size"
|
||||
new "tamaño de fuente"
|
||||
|
||||
# 00preferences.rpy:441
|
||||
old "font line spacing"
|
||||
new "fuente de espacio de líneas"
|
||||
|
||||
# _developer\developer.rpym:63
|
||||
old "Image Attributes"
|
||||
new "Atrubutos de Imagen"
|
||||
|
||||
# _developer\developer.rpym:90
|
||||
old "[name] [attributes] (hidden)"
|
||||
new "[name] [attributes] (hidden)"
|
||||
|
||||
# _developer\developer.rpym:94
|
||||
old "[name] [attributes]"
|
||||
new "[name] [attributes]"
|
||||
|
||||
# _developer\developer.rpym:154
|
||||
old "Hide deleted"
|
||||
new "Hide deleted"
|
||||
|
||||
# _developer\developer.rpym:154
|
||||
old "Show deleted"
|
||||
new "Show deleted"
|
||||
|
||||
|
||||
@@ -187,4 +187,15 @@ translate spanish strings:
|
||||
|
||||
# 00console.rpy:639
|
||||
old "jump <label>: jumps to label"
|
||||
new "jump <label>: salta a la etiqueta"
|
||||
new "jump <label>: salta a la etiqueta"
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# 00console.rpy:680
|
||||
old "short: Shorten the representation of objects on the console (default)."
|
||||
new "corto: Acorta la representación de los objetos en la consola (predeterminado)."
|
||||
|
||||
# 00console.rpy:685
|
||||
old "long: Print the full representation of objects on the console."
|
||||
new "largo: imprime la representación completa de los objetos en la consola."
|
||||
|
||||
|
||||
@@ -211,4 +211,31 @@ translate spanish strings:
|
||||
|
||||
# _errorhandling.rpym:667
|
||||
old "Copies the errors.txt file to the clipboard."
|
||||
new "Copia el archivo errors.txt al portapapeles."
|
||||
new "Copia el archivo errors.txt al portapapeles."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# _errorhandling.rpym:542
|
||||
old "Copy BBCode"
|
||||
new "Copiar BBCode"
|
||||
|
||||
# _errorhandling.rpym:544
|
||||
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
|
||||
new "Copia el archivo traceback.txt en el portapapeles como BBcode para foros como https://lemmasoft.renai.us/."
|
||||
|
||||
# _errorhandling.rpym:546
|
||||
old "Copy Markdown"
|
||||
new "Copiar Markdown"
|
||||
|
||||
# _errorhandling.rpym:548
|
||||
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
|
||||
new "Copia el archivo traceback.txt al portapapeles como Markdown paara Discord."
|
||||
|
||||
# _errorhandling.rpym:683
|
||||
old "Copies the errors.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
|
||||
new "Copia el archivo errors.txt en el portapapeles como BBcode para foros como https://lemmasoft.renai.us/."
|
||||
|
||||
# _errorhandling.rpym:687
|
||||
old "Copies the errors.txt file to the clipboard as Markdown for Discord."
|
||||
new "Copia el archivo errors.txt al portapapeles como Markdown para Discord."
|
||||
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
# Copyright 2004-2019 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# This file contains the launcher support for creating RenPyWeb projects,
|
||||
# other than the logic in the standard distribute code.
|
||||
|
||||
|
||||
init python:
|
||||
|
||||
import shutil
|
||||
import webserver
|
||||
|
||||
WEB_PATH = None
|
||||
|
||||
def find_web():
|
||||
|
||||
global WEB_PATH
|
||||
|
||||
candidates = [ ]
|
||||
|
||||
WEB_PATH = os.path.join(config.renpy_base, "web")
|
||||
|
||||
if os.path.isdir(WEB_PATH) and check_hash_txt("web"):
|
||||
pass
|
||||
else:
|
||||
WEB_PATH = None
|
||||
|
||||
find_web()
|
||||
|
||||
def get_web_destination(p):
|
||||
"""
|
||||
Returns the path to the desint
|
||||
"""
|
||||
|
||||
build = p.dump['build']
|
||||
|
||||
base_name = build['directory_name']
|
||||
destination = build["destination"]
|
||||
|
||||
parent = os.path.dirname(p.path)
|
||||
destination = os.path.join(parent, destination, base_name + "-web")
|
||||
|
||||
return destination
|
||||
|
||||
def build_web(p, gui=True):
|
||||
|
||||
# Figure out the reporter to use.
|
||||
if gui:
|
||||
reporter = distribute.GuiReporter()
|
||||
else:
|
||||
reporter = distribute.TextReporter()
|
||||
|
||||
# Determine details.
|
||||
p.update_dump(True, gui=gui)
|
||||
|
||||
destination = get_web_destination(p)
|
||||
display_name = p.dump['build']['display_name']
|
||||
|
||||
# Clean the folder, then remale it.
|
||||
if os.path.exists(destination):
|
||||
shutil.rmtree(destination)
|
||||
|
||||
os.makedirs(destination, 0o777)
|
||||
|
||||
# Use the distributor to make game.zip.
|
||||
distribute.Distributor(p, packages=[ "web" ], packagedest=os.path.join(destination, "game"), reporter=reporter, noarchive=True, scan=False)
|
||||
|
||||
# Copy the files from WEB_PATH to destination.
|
||||
for fn in os.listdir(WEB_PATH):
|
||||
if fn in { "game.zip", "hash.txt", "index.html" }:
|
||||
continue
|
||||
|
||||
shutil.copy(os.path.join(WEB_PATH, fn), os.path.join(destination, fn))
|
||||
|
||||
# Copy over index.html.
|
||||
with open(os.path.join(WEB_PATH, "index.html")) as f:
|
||||
html = f.read()
|
||||
|
||||
html = html.replace("%%TITLE%%", display_name.encode("utf-8"))
|
||||
|
||||
with open(os.path.join(destination, "index.html"), "w") as f:
|
||||
f.write(html)
|
||||
|
||||
webserver.start(destination)
|
||||
|
||||
|
||||
def launch_web():
|
||||
renpy.run(OpenURL("http://127.0.0.1:8042/index.html"))
|
||||
|
||||
screen web():
|
||||
|
||||
frame:
|
||||
style_group "l"
|
||||
style "l_root"
|
||||
|
||||
window:
|
||||
|
||||
has vbox
|
||||
|
||||
label _("Web: [project.current.display_name!q]")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
|
||||
hbox:
|
||||
|
||||
# Left side.
|
||||
frame:
|
||||
style "l_indent"
|
||||
xmaximum ONEHALF
|
||||
xfill True
|
||||
|
||||
has vbox
|
||||
|
||||
add SEPARATOR2
|
||||
add HALF_SPACER
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Build:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
frame style "l_indent":
|
||||
|
||||
has vbox
|
||||
|
||||
textbutton _("Build Web Application") action Jump("web_build")
|
||||
textbutton _("Build and Open in Browser") action Jump("web_launch")
|
||||
textbutton _("Open without Build") action Jump("web_start")
|
||||
|
||||
add SPACER
|
||||
|
||||
text _("Support:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
frame style "l_indent":
|
||||
|
||||
has vbox
|
||||
|
||||
textbutton _("RenPyWeb Home") action OpenURL("https://renpy.beuc.net/")
|
||||
textbutton _("Beuc's Patreon") action OpenURL("https://www.beuc.net/donate/")
|
||||
|
||||
|
||||
# Right side.
|
||||
frame:
|
||||
style "l_indent"
|
||||
xmaximum ONEHALF
|
||||
xfill True
|
||||
|
||||
has vbox
|
||||
|
||||
add SEPARATOR2
|
||||
add HALF_SPACER
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Ren'Py web applications require the entire game to be downloaded to the player's computer before it can start.")
|
||||
|
||||
add SPACER
|
||||
|
||||
text _("Current limitations in the web platform mean that loading large images, audio files, or movies may cause audio or framerate glitches, and lower performance in general.")
|
||||
|
||||
textbutton _("Return") action Jump("front_page") style "l_left_button"
|
||||
|
||||
|
||||
|
||||
label web:
|
||||
|
||||
if WEB_PATH is None:
|
||||
$ interface.yesno(_("Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"), no=Jump("front_page"))
|
||||
$ add_dlc("web", restart=True)
|
||||
|
||||
call screen web
|
||||
|
||||
jump front_page
|
||||
|
||||
|
||||
label web_build:
|
||||
$ build_web(project.current, gui=True)
|
||||
jump web
|
||||
|
||||
|
||||
label web_launch:
|
||||
$ build_web(project.current, gui=True)
|
||||
$ launch_web()
|
||||
jump web
|
||||
|
||||
|
||||
label web_start:
|
||||
$ project.current.update_dump(True, gui=True)
|
||||
$ webserver.start(get_web_destination(project.current))
|
||||
$ launch_web()
|
||||
jump web
|
||||
@@ -0,0 +1,253 @@
|
||||
import BaseHTTPServer
|
||||
import threading
|
||||
|
||||
import posixpath
|
||||
import urllib
|
||||
import os
|
||||
import os
|
||||
import posixpath
|
||||
import BaseHTTPServer
|
||||
import urllib
|
||||
import urlparse
|
||||
import cgi
|
||||
import sys
|
||||
import shutil
|
||||
import mimetypes
|
||||
|
||||
try:
|
||||
from cStringIO import StringIO
|
||||
except ImportError:
|
||||
from StringIO import StringIO
|
||||
|
||||
# The path to the root of the web server.
|
||||
root = ""
|
||||
|
||||
import renpy
|
||||
|
||||
|
||||
class WebHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
|
||||
"""Simple HTTP request handler with GET and HEAD commands.
|
||||
|
||||
This serves files from the current directory and any of its
|
||||
subdirectories. The MIME type for files is determined by
|
||||
calling the .guess_type() method.
|
||||
|
||||
The GET and HEAD requests are identical except that the HEAD
|
||||
request omits the actual contents of the file.
|
||||
|
||||
"""
|
||||
|
||||
server_version = "Ren'Py/" + renpy.version_only # @UndefinedVariable
|
||||
|
||||
def do_GET(self):
|
||||
"""Serve a GET request."""
|
||||
f = self.send_head()
|
||||
if f:
|
||||
try:
|
||||
self.copyfile(f, self.wfile)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
def do_HEAD(self):
|
||||
"""Serve a HEAD request."""
|
||||
f = self.send_head()
|
||||
if f:
|
||||
f.close()
|
||||
|
||||
def send_head(self):
|
||||
"""Common code for GET and HEAD commands.
|
||||
|
||||
This sends the response code and MIME headers.
|
||||
|
||||
Return value is either a file object (which has to be copied
|
||||
to the outputfile by the caller unless the command was HEAD,
|
||||
and must be closed by the caller under all circumstances), or
|
||||
None, in which case the caller has nothing further to do.
|
||||
|
||||
"""
|
||||
path = self.translate_path(self.path)
|
||||
f = None
|
||||
if os.path.isdir(path):
|
||||
parts = urlparse.urlsplit(self.path)
|
||||
if not parts.path.endswith('/'):
|
||||
# redirect browser - doing basically what apache does
|
||||
self.send_response(301)
|
||||
new_parts = (parts[0], parts[1], parts[2] + '/',
|
||||
parts[3], parts[4])
|
||||
new_url = urlparse.urlunsplit(new_parts)
|
||||
self.send_header("Location", new_url)
|
||||
self.end_headers()
|
||||
return None
|
||||
for index in "index.html", "index.htm":
|
||||
index = os.path.join(path, index)
|
||||
if os.path.exists(index):
|
||||
path = index
|
||||
break
|
||||
else:
|
||||
return self.list_directory(path)
|
||||
ctype = self.guess_type(path)
|
||||
try:
|
||||
# Always read in binary mode. Opening files in text mode may cause
|
||||
# newline translations, making the actual size of the content
|
||||
# transmitted *less* than the content-length!
|
||||
f = open(path, 'rb')
|
||||
except IOError:
|
||||
self.send_error(404, "File not found")
|
||||
return None
|
||||
try:
|
||||
self.send_response(200)
|
||||
self.send_header("Content-type", ctype)
|
||||
fs = os.fstat(f.fileno())
|
||||
|
||||
# Ren'Py - bust cache.
|
||||
self.send_header("Pragma", "no-cache")
|
||||
|
||||
self.send_header("Content-Length", str(fs[6]))
|
||||
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
|
||||
self.end_headers()
|
||||
return f
|
||||
except:
|
||||
f.close()
|
||||
raise
|
||||
|
||||
def list_directory(self, path):
|
||||
"""Helper to produce a directory listing (absent index.html).
|
||||
|
||||
Return value is either a file object, or None (indicating an
|
||||
error). In either case, the headers are sent, making the
|
||||
interface the same as for send_head().
|
||||
|
||||
"""
|
||||
try:
|
||||
list = os.listdir(path)
|
||||
except os.error:
|
||||
self.send_error(404, "No permission to list directory")
|
||||
return None
|
||||
list.sort(key=lambda a: a.lower())
|
||||
f = StringIO()
|
||||
displaypath = cgi.escape(urllib.unquote(self.path))
|
||||
f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
|
||||
f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
|
||||
f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
|
||||
f.write("<hr>\n<ul>\n")
|
||||
for name in list:
|
||||
fullname = os.path.join(path, name)
|
||||
displayname = linkname = name
|
||||
# Append / for directories or @ for symbolic links
|
||||
if os.path.isdir(fullname):
|
||||
displayname = name + "/"
|
||||
linkname = name + "/"
|
||||
if os.path.islink(fullname):
|
||||
displayname = name + "@"
|
||||
# Note: a link to a directory displays with @ and links with /
|
||||
f.write('<li><a href="%s">%s</a>\n'
|
||||
% (urllib.quote(linkname), cgi.escape(displayname)))
|
||||
f.write("</ul>\n<hr>\n</body>\n</html>\n")
|
||||
length = f.tell()
|
||||
f.seek(0)
|
||||
self.send_response(200)
|
||||
encoding = sys.getfilesystemencoding()
|
||||
self.send_header("Content-type", "text/html; charset=%s" % encoding)
|
||||
self.send_header("Content-Length", str(length))
|
||||
self.end_headers()
|
||||
return f
|
||||
|
||||
def translate_path(self, path):
|
||||
"""Translate a /-separated PATH to the local filename syntax.
|
||||
|
||||
Components that mean special things to the local file system
|
||||
(e.g. drive or directory names) are ignored. (XXX They should
|
||||
probably be diagnosed.)
|
||||
|
||||
"""
|
||||
# abandon query parameters
|
||||
path = path.split('?', 1)[0]
|
||||
path = path.split('#', 1)[0]
|
||||
# Don't forget explicit trailing slash when normalizing. Issue17324
|
||||
trailing_slash = path.rstrip().endswith('/')
|
||||
path = posixpath.normpath(urllib.unquote(path))
|
||||
words = path.split('/')
|
||||
words = filter(None, words)
|
||||
|
||||
# Ren'Py - use the root we were given.
|
||||
path = root
|
||||
|
||||
for word in words:
|
||||
if os.path.dirname(word) or word in (os.curdir, os.pardir):
|
||||
# Ignore components that are not a simple file/directory name
|
||||
continue
|
||||
path = os.path.join(path, word)
|
||||
if trailing_slash:
|
||||
path += '/'
|
||||
return path
|
||||
|
||||
def copyfile(self, source, outputfile):
|
||||
"""Copy all data between two file objects.
|
||||
|
||||
The SOURCE argument is a file object open for reading
|
||||
(or anything with a read() method) and the DESTINATION
|
||||
argument is a file object open for writing (or
|
||||
anything with a write() method).
|
||||
|
||||
The only reason for overriding this would be to change
|
||||
the block size or perhaps to replace newlines by CRLF
|
||||
-- note however that this the default server uses this
|
||||
to copy binary data as well.
|
||||
|
||||
"""
|
||||
shutil.copyfileobj(source, outputfile)
|
||||
|
||||
def guess_type(self, path):
|
||||
"""Guess the type of a file.
|
||||
|
||||
Argument is a PATH (a filename).
|
||||
|
||||
Return value is a string of the form type/subtype,
|
||||
usable for a MIME Content-type header.
|
||||
|
||||
The default implementation looks the file's extension
|
||||
up in the table self.extensions_map, using application/octet-stream
|
||||
as a default; however it would be permissible (if
|
||||
slow) to look inside the data to make a better guess.
|
||||
|
||||
"""
|
||||
|
||||
base, ext = posixpath.splitext(path)
|
||||
if ext in self.extensions_map:
|
||||
return self.extensions_map[ext]
|
||||
ext = ext.lower()
|
||||
if ext in self.extensions_map:
|
||||
return self.extensions_map[ext]
|
||||
else:
|
||||
return self.extensions_map['']
|
||||
|
||||
extensions_map = {
|
||||
'': 'application/octet-stream', # Default
|
||||
'.gz': 'application/gzip',
|
||||
'.htm': 'text/html',
|
||||
'.html': 'text/html',
|
||||
'.js': 'application/javascript',
|
||||
}
|
||||
|
||||
|
||||
def run():
|
||||
server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8042), WebHandler)
|
||||
server.serve_forever()
|
||||
|
||||
|
||||
def start(root_):
|
||||
|
||||
print("----")
|
||||
|
||||
global root
|
||||
|
||||
started = root
|
||||
root = root_
|
||||
|
||||
if started:
|
||||
return
|
||||
|
||||
t = threading.Thread(target=run)
|
||||
t.daemon = True
|
||||
t.start()
|
||||
+182
-5
@@ -10,9 +10,18 @@
|
||||
|
||||
#if defined(__arm__) && !(__MACOS__ || __IPHONEOS__)
|
||||
#define USE_MEMALIGN
|
||||
#include <malloc.h>
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
/* Should a mono channel be split into two equal stero channels (true) or
|
||||
* should the energy be split onto two stereo channels with 1/2 the energy
|
||||
* (false).
|
||||
*/
|
||||
static int audio_equal_mono = 1;
|
||||
|
||||
/* The weight of stereo channels when audio_equal_mono is true. */
|
||||
static float stereo_matrix[] = { 1.0, 1.0 };
|
||||
|
||||
/* The output audio sample rate. */
|
||||
static int audio_sample_rate = 44100;
|
||||
|
||||
@@ -564,6 +573,10 @@ static void decode_audio(MediaState *ms) {
|
||||
|
||||
if (!ms->audio_decode_frame->channel_layout) {
|
||||
ms->audio_decode_frame->channel_layout = av_get_default_channel_layout(ms->audio_decode_frame->channels);
|
||||
|
||||
if (audio_equal_mono && (ms->audio_decode_frame->channels == 1)) {
|
||||
swr_set_matrix(ms->swr, stereo_matrix, 1);
|
||||
}
|
||||
}
|
||||
|
||||
converted_frame = av_frame_alloc();
|
||||
@@ -723,7 +736,7 @@ static SurfaceQueueEntry *decode_video_frame(MediaState *ms) {
|
||||
|
||||
|
||||
#ifdef USE_MEMALIGN
|
||||
rv->pixels = memalign(16, rv->pitch * rv->h);
|
||||
posix_memalign(&rv->pixels, 16, rv->pitch * rv->h);
|
||||
memset(rv->pixels, 0, rv->pitch * rv->h);
|
||||
#else
|
||||
rv->pixels = SDL_calloc(1, rv->pitch * rv->h);
|
||||
@@ -788,10 +801,16 @@ static void decode_video(MediaState *ms) {
|
||||
}
|
||||
|
||||
|
||||
static int decode_sync_start(void *arg);
|
||||
void media_read_sync(struct MediaState *ms);
|
||||
void media_read_sync_finish(struct MediaState *ms);
|
||||
|
||||
|
||||
/**
|
||||
* Returns 1 if there is a video frame ready on this channel, or 0 otherwise.
|
||||
*/
|
||||
int media_video_ready(struct MediaState *ms) {
|
||||
|
||||
int consumed = 0;
|
||||
int rv = 0;
|
||||
|
||||
@@ -857,6 +876,7 @@ done:
|
||||
|
||||
|
||||
SDL_Surface *media_read_video(MediaState *ms) {
|
||||
|
||||
SDL_Surface *rv = NULL;
|
||||
SurfaceQueueEntry *sqe = NULL;
|
||||
|
||||
@@ -866,9 +886,11 @@ SDL_Surface *media_read_video(MediaState *ms) {
|
||||
|
||||
SDL_LockMutex(ms->lock);
|
||||
|
||||
#ifndef __EMSCRIPTEN__
|
||||
while (!ms->ready) {
|
||||
SDL_CondWait(ms->cond, ms->lock);
|
||||
SDL_CondWait(ms->cond, ms->lock);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!ms->surface_queue_size) {
|
||||
goto done;
|
||||
@@ -1042,7 +1064,148 @@ finish:
|
||||
}
|
||||
|
||||
|
||||
void media_read_sync_finish(struct MediaState *ms) {
|
||||
// copy/paste from end of decode_thread
|
||||
|
||||
/* Data used by the decoder should be freed here, while data shared with
|
||||
* the readers should be freed in media_close.
|
||||
*/
|
||||
|
||||
SDL_LockMutex(ms->lock);
|
||||
|
||||
/* Ensures that every stream becomes ready. */
|
||||
if (!ms->ready) {
|
||||
ms->ready = 1;
|
||||
SDL_CondBroadcast(ms->cond);
|
||||
}
|
||||
|
||||
while (!ms->quit) {
|
||||
/* SDL_CondWait(ms->cond, ms->lock); */
|
||||
}
|
||||
|
||||
SDL_UnlockMutex(ms->lock);
|
||||
|
||||
deallocate(ms);
|
||||
}
|
||||
|
||||
|
||||
static int decode_sync_start(void *arg) {
|
||||
// copy/paste from start of decode_thread
|
||||
MediaState *ms = (MediaState *) arg;
|
||||
|
||||
int err;
|
||||
|
||||
AVFormatContext *ctx = avformat_alloc_context();
|
||||
ms->ctx = ctx;
|
||||
|
||||
AVIOContext *io_context = rwops_open(ms->rwops);
|
||||
ctx->pb = io_context;
|
||||
|
||||
err = avformat_open_input(&ctx, ms->filename, NULL, NULL);
|
||||
if (err) {
|
||||
media_read_sync_finish(ms);
|
||||
}
|
||||
|
||||
err = avformat_find_stream_info(ctx, NULL);
|
||||
if (err) {
|
||||
media_read_sync_finish(ms);
|
||||
}
|
||||
|
||||
|
||||
ms->video_stream = -1;
|
||||
ms->audio_stream = -1;
|
||||
|
||||
for (int i = 0; i < ctx->nb_streams; i++) {
|
||||
if (ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
if (ms->want_video && ms->video_stream == -1) {
|
||||
ms->video_stream = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
if (ms->audio_stream == -1) {
|
||||
ms->audio_stream = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ms->video_context = find_context(ctx, ms->video_stream);
|
||||
ms->audio_context = find_context(ctx, ms->audio_stream);
|
||||
|
||||
ms->swr = swr_alloc();
|
||||
|
||||
av_init_packet(&ms->video_pkt);
|
||||
|
||||
// Compute the number of samples we need to play back.
|
||||
if (ms->audio_duration < 0) {
|
||||
if (av_fmt_ctx_get_duration_estimation_method(ctx) != AVFMT_DURATION_FROM_BITRATE) {
|
||||
|
||||
long long duration = ((long long) ctx->duration) * audio_sample_rate;
|
||||
ms->audio_duration = (unsigned int) (duration / AV_TIME_BASE);
|
||||
|
||||
ms->total_duration = 1.0 * ctx->duration / AV_TIME_BASE;
|
||||
|
||||
// Check that the duration is reasonable (between 0s and 3600s). If not,
|
||||
// reject it.
|
||||
if (ms->audio_duration < 0 || ms->audio_duration > 3600 * audio_sample_rate) {
|
||||
ms->audio_duration = -1;
|
||||
}
|
||||
|
||||
ms->audio_duration -= (unsigned int) (ms->skip * audio_sample_rate);
|
||||
|
||||
|
||||
} else {
|
||||
ms->audio_duration = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (ms->skip != 0.0) {
|
||||
av_seek_frame(ctx, -1, (int64_t) (ms->skip * AV_TIME_BASE), AVSEEK_FLAG_BACKWARD);
|
||||
}
|
||||
|
||||
// [snip!]
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void media_read_sync(struct MediaState *ms) {
|
||||
// copy/paste from middle of decode_thread
|
||||
// printf("---* media_read_sync %p\n", ms);
|
||||
|
||||
//while (!ms->quit) {
|
||||
if (!ms->quit) {
|
||||
// printf(" audio_finished: %d, video_finished: %d\n", ms->audio_finished, ms->video_finished);
|
||||
if (! ms->audio_finished) {
|
||||
decode_audio(ms);
|
||||
}
|
||||
|
||||
if (! ms->video_finished) {
|
||||
decode_video(ms);
|
||||
}
|
||||
|
||||
SDL_LockMutex(ms->lock);
|
||||
|
||||
if (!ms->ready) {
|
||||
ms->ready = 1;
|
||||
SDL_CondBroadcast(ms->cond);
|
||||
}
|
||||
|
||||
if (!(ms->needs_decode || ms->quit)) {
|
||||
/* SDL_CondWait(ms->cond, ms->lock); */
|
||||
}
|
||||
|
||||
ms->needs_decode = 0;
|
||||
|
||||
SDL_UnlockMutex(ms->lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int media_read_audio(struct MediaState *ms, Uint8 *stream, int len) {
|
||||
#ifdef __EMSCRIPTEN__
|
||||
media_read_sync(ms);
|
||||
#endif
|
||||
|
||||
SDL_LockMutex(ms->lock);
|
||||
|
||||
@@ -1127,6 +1290,7 @@ int media_read_audio(struct MediaState *ms, Uint8 *stream, int len) {
|
||||
}
|
||||
|
||||
void media_wait_ready(struct MediaState *ms) {
|
||||
#ifndef __EMSCRIPTEN__
|
||||
SDL_LockMutex(ms->lock);
|
||||
|
||||
while (!ms->ready) {
|
||||
@@ -1134,6 +1298,7 @@ void media_wait_ready(struct MediaState *ms) {
|
||||
}
|
||||
|
||||
SDL_UnlockMutex(ms->lock);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -1142,7 +1307,12 @@ double media_duration(MediaState *ms) {
|
||||
}
|
||||
|
||||
void media_start(MediaState *ms) {
|
||||
char buf[1024];
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
decode_sync_start(ms);
|
||||
#else
|
||||
|
||||
char buf[1024];
|
||||
|
||||
snprintf(buf, 1024, "decode: %s", ms->filename);
|
||||
SDL_Thread *t = SDL_CreateThread(decode_thread, buf, (void *) ms);
|
||||
@@ -1151,6 +1321,7 @@ void media_start(MediaState *ms) {
|
||||
ms->started = 1;
|
||||
SDL_DetachThread(t);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -1210,6 +1381,11 @@ void media_close(MediaState *ms) {
|
||||
/* Tell the decoder to terminate. It will deallocate everything for us. */
|
||||
SDL_LockMutex(ms->lock);
|
||||
ms->quit = 1;
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
media_read_sync_finish(ms);
|
||||
#endif
|
||||
|
||||
SDL_CondBroadcast(ms->cond);
|
||||
SDL_UnlockMutex(ms->lock);
|
||||
|
||||
@@ -1224,9 +1400,10 @@ void media_sample_surfaces(SDL_Surface *rgb, SDL_Surface *rgba) {
|
||||
rgba_surface = rgba;
|
||||
}
|
||||
|
||||
void media_init(int rate, int status) {
|
||||
void media_init(int rate, int status, int equal_mono) {
|
||||
|
||||
audio_sample_rate = rate / SPEED;
|
||||
audio_equal_mono = equal_mono;
|
||||
|
||||
av_register_all();
|
||||
|
||||
|
||||
+33
-18
@@ -31,11 +31,33 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
#define MAXVOLUME 16384
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
|
||||
#define EVAL_LOCK() { }
|
||||
#define EVAL_UNLOCK() { }
|
||||
#define BEGIN() { }
|
||||
#define ENTER() { }
|
||||
#define EXIT() { }
|
||||
#define ALTENTER() { }
|
||||
#define ALTEXIT() { }
|
||||
|
||||
#else
|
||||
|
||||
#define EVAL_LOCK() { PyEval_AcquireLock(); }
|
||||
#define EVAL_UNLOCK() { PyEval_ReleaseLock(); }
|
||||
#define BEGIN() PyThreadState *_save;
|
||||
#define ENTER() { _save = PyEval_SaveThread(); SDL_LockAudio(); }
|
||||
#define EXIT() { SDL_UnlockAudio(); PyEval_RestoreThread(_save); }
|
||||
#define ALTENTER() { _save = PyEval_SaveThread(); }
|
||||
#define ALTEXIT() { PyEval_RestoreThread(_save); }
|
||||
|
||||
#endif
|
||||
|
||||
/* Declarations of ffdecode functions. */
|
||||
struct MediaState;
|
||||
typedef struct MediaState MediaState;
|
||||
|
||||
void media_init(int rate, int status);
|
||||
void media_init(int rate, int status, int equal_mono);
|
||||
|
||||
void media_advance_time(void);
|
||||
void media_sample_surfaces(SDL_Surface *rgb, SDL_Surface *rgba);
|
||||
@@ -61,21 +83,21 @@ PyThreadState* thread = NULL;
|
||||
static void incref(PyObject *ref) {
|
||||
PyThreadState *oldstate;
|
||||
|
||||
PyEval_AcquireLock();
|
||||
EVAL_LOCK();
|
||||
oldstate = PyThreadState_Swap(thread);
|
||||
Py_INCREF(ref);
|
||||
PyThreadState_Swap(oldstate);
|
||||
PyEval_ReleaseLock();
|
||||
EVAL_UNLOCK();
|
||||
}
|
||||
|
||||
static void decref(PyObject *ref) {
|
||||
PyThreadState *oldstate;
|
||||
|
||||
PyEval_AcquireLock();
|
||||
EVAL_LOCK();
|
||||
oldstate = PyThreadState_Swap(thread);
|
||||
Py_DECREF(ref);
|
||||
PyThreadState_Swap(oldstate);
|
||||
PyEval_ReleaseLock();
|
||||
EVAL_UNLOCK();
|
||||
}
|
||||
|
||||
/* A mutex that protects the shared data structures. */
|
||||
@@ -84,17 +106,6 @@ SDL_mutex *name_mutex;
|
||||
#define LOCK_NAME() { SDL_LockMutex(name_mutex); }
|
||||
#define UNLOCK_NAME() { SDL_UnlockMutex(name_mutex); }
|
||||
|
||||
/* Locking on entry from python... */
|
||||
// #define BEGIN() PyThreadState *_save;
|
||||
// #define ENTER() { printf("Locking by %s.\n", __FUNCTION__); _save = PyEval_SaveThread(); SDL_LockAudio(); printf("Lock by %s\n", __FUNCTION__); }
|
||||
// #define EXIT() { SDL_UnlockAudio(); PyEval_RestoreThread(_save); printf("Release by %s\n", __FUNCTION__); }
|
||||
|
||||
#define BEGIN() PyThreadState *_save;
|
||||
#define ENTER() { _save = PyEval_SaveThread(); SDL_LockAudio(); }
|
||||
#define EXIT() { SDL_UnlockAudio(); PyEval_RestoreThread(_save); }
|
||||
#define ALTENTER() { _save = PyEval_SaveThread(); }
|
||||
#define ALTEXIT() { PyEval_RestoreThread(_save); }
|
||||
|
||||
/* Min and Max */
|
||||
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
||||
#define max(a, b) (((a) > (b)) ? (a) : (b))
|
||||
@@ -433,6 +444,7 @@ static void pan_audio(struct Channel *c, Uint8 *stream, int length) {
|
||||
}
|
||||
|
||||
static void callback(void *userdata, Uint8 *stream, int length) {
|
||||
|
||||
int channel = 0;
|
||||
|
||||
memset(stream, 0, length);
|
||||
@@ -1199,7 +1211,7 @@ void RPS_set_video(int channel, int video) {
|
||||
* Initializes the sound to the given frequencies, channels, and
|
||||
* sample buffer size.
|
||||
*/
|
||||
void RPS_init(int freq, int stereo, int samples, int status) {
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono) {
|
||||
|
||||
if (initialized) {
|
||||
return;
|
||||
@@ -1207,7 +1219,10 @@ void RPS_init(int freq, int stereo, int samples, int status) {
|
||||
|
||||
name_mutex = SDL_CreateMutex();
|
||||
|
||||
#ifndef __EMSCRIPTEN__
|
||||
PyEval_InitThreads();
|
||||
#endif
|
||||
|
||||
import_pygame_sdl2();
|
||||
|
||||
if (!thread) {
|
||||
@@ -1238,7 +1253,7 @@ void RPS_init(int freq, int stereo, int samples, int status) {
|
||||
return;
|
||||
}
|
||||
|
||||
media_init(audio_spec.freq, status);
|
||||
media_init(audio_spec.freq, status, equal_mono);
|
||||
|
||||
SDL_PauseAudio(0);
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ PyObject *RPS_read_video(int channel);
|
||||
void RPS_sample_surfaces(PyObject *rgb, PyObject *rgba);
|
||||
void RPS_set_video(int channel, int video);
|
||||
|
||||
void RPS_init(int freq, int stereo, int samples, int status);
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono);
|
||||
void RPS_quit(void);
|
||||
|
||||
void RPS_advance_time(void);
|
||||
|
||||
@@ -45,11 +45,19 @@ emscripten = "RENPY_EMSCRIPTEN" in os.environ
|
||||
# Is coverage enabled?
|
||||
coverage = "RENPY_COVERAGE" in os.environ
|
||||
|
||||
# Are we doing a static build?
|
||||
static = "RENPY_STATIC" in os.environ
|
||||
|
||||
if coverage:
|
||||
gen = "gen.coverage"
|
||||
else:
|
||||
gen = "gen"
|
||||
|
||||
|
||||
if static:
|
||||
gen += "-static"
|
||||
|
||||
|
||||
# The cython command.
|
||||
cython_command = os.environ.get("RENPY_CYTHON", "cython")
|
||||
|
||||
@@ -317,6 +325,18 @@ def cython(name, source=[], libs=[], includes=[], compile_if=True, define_macros
|
||||
"-o",
|
||||
c_fn])
|
||||
|
||||
# Fix-up source for static loading
|
||||
if static and (len(split_name) > 1):
|
||||
parent_module = '.'.join(split_name[:-1])
|
||||
parent_module_identifier = parent_module.replace('.', '_')
|
||||
with open(c_fn, 'r') as f:
|
||||
ccode = f.read()
|
||||
ccode = re.sub('Py_InitModule4\("([^"]+)"', 'Py_InitModule4("'+parent_module+'.\\1"', ccode)
|
||||
ccode = re.sub('^__Pyx_PyMODINIT_FUNC init', '__Pyx_PyMODINIT_FUNC init'+parent_module_identifier+'_', ccode, 0, re.MULTILINE) # Cython 0.28.2
|
||||
ccode = re.sub('^PyMODINIT_FUNC init', 'PyMODINIT_FUNC init'+parent_module_identifier+'_', ccode, 0, re.MULTILINE) # Cython 0.25.2
|
||||
with open(c_fn, 'w') as f:
|
||||
f.write(ccode)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print()
|
||||
print(str(e))
|
||||
|
||||
+15
-2
@@ -40,7 +40,7 @@ except ImportError:
|
||||
vc_version = 0
|
||||
|
||||
# The tuple giving the version number.
|
||||
version_tuple = (7, 2, 2, vc_version)
|
||||
version_tuple = (7, 2, 3, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "What's on the menu."
|
||||
@@ -551,6 +551,10 @@ def post_import():
|
||||
vars(renpy.exports).setdefault(k, v)
|
||||
|
||||
|
||||
def issubmodule(sub, module):
|
||||
return sub == module or sub.startswith(module + ".")
|
||||
|
||||
|
||||
def reload_all():
|
||||
"""
|
||||
Resets all modules to the state they were in right after import_all
|
||||
@@ -588,10 +592,11 @@ def reload_all():
|
||||
renpy.display.interface = None
|
||||
|
||||
py_compile_cache = renpy.python.py_compile_cache
|
||||
reload_modules = renpy.config.reload_modules
|
||||
|
||||
# Delete the store modules.
|
||||
for i in sys.modules.keys():
|
||||
if i.startswith("store") or i == "renpy.store":
|
||||
if issubmodule(i, "store") or i == "renpy.store":
|
||||
m = sys.modules[i]
|
||||
|
||||
if m is not None:
|
||||
@@ -599,6 +604,14 @@ def reload_all():
|
||||
|
||||
del sys.modules[i]
|
||||
|
||||
elif any(issubmodule(i, m) for m in reload_modules):
|
||||
m = sys.modules[i]
|
||||
|
||||
if m is not None:
|
||||
m.__dict__.clear()
|
||||
|
||||
del sys.modules[i]
|
||||
|
||||
# Restore the state of all modules from backup.
|
||||
backup.restore()
|
||||
|
||||
|
||||
+24
-4
@@ -249,6 +249,16 @@ class PyExpr(unicode):
|
||||
return (unicode(self), self.filename, self.linenumber) # E1101
|
||||
|
||||
|
||||
def probably_side_effect_free(expr):
|
||||
"""
|
||||
Returns true if an expr probably does not have side effects, and should
|
||||
be predicted. Basically, this just whitelists a set of characters that
|
||||
doesn't allow for a function call.
|
||||
"""
|
||||
|
||||
return not ("(" in expr)
|
||||
|
||||
|
||||
class PyCode(object):
|
||||
|
||||
__slots__ = [
|
||||
@@ -1436,6 +1446,10 @@ class Call(Node):
|
||||
label = self.label
|
||||
|
||||
if self.expression:
|
||||
|
||||
if not probably_side_effect_free(label):
|
||||
return [ ]
|
||||
|
||||
label = renpy.python.py_eval(label)
|
||||
|
||||
return [ renpy.game.context().predict_call(label, self.next.name) ]
|
||||
@@ -1682,10 +1696,16 @@ class Jump(Node):
|
||||
|
||||
def predict(self):
|
||||
|
||||
label = self.target
|
||||
|
||||
if self.expression:
|
||||
return [ ]
|
||||
else:
|
||||
return [ renpy.game.script.lookup(self.target) ]
|
||||
|
||||
if not probably_side_effect_free(label):
|
||||
return [ ]
|
||||
|
||||
label = renpy.python.py_eval(label)
|
||||
|
||||
return [ renpy.game.script.lookup(label) ]
|
||||
|
||||
def scry(self):
|
||||
rv = Node.scry(self)
|
||||
@@ -1984,7 +2004,7 @@ def get_namespace(store):
|
||||
|
||||
# Config variables that are set twice - once when the rpy is first loaded,
|
||||
# and then again at init time.
|
||||
EARLY_CONFIG = { "save_directory", "allow_duplicate_labels" }
|
||||
EARLY_CONFIG = { "save_directory", "allow_duplicate_labels", "keyword_after_python" }
|
||||
|
||||
define_statements = [ ]
|
||||
|
||||
|
||||
@@ -811,12 +811,16 @@ def init():
|
||||
|
||||
if pcm_ok is None and renpysound:
|
||||
bufsize = 2048
|
||||
if renpy.emscripten:
|
||||
# Large buffer (and latency) as compromise to avoid sound jittering
|
||||
bufsize = 8192 # works for me
|
||||
#bufsize = 16384 # jitter/silence right after starting a sound
|
||||
|
||||
if 'RENPY_SOUND_BUFSIZE' in os.environ:
|
||||
bufsize = int(os.environ['RENPY_SOUND_BUFSIZE'])
|
||||
|
||||
try:
|
||||
renpysound.init(renpy.config.sound_sample_rate, 2, bufsize, False)
|
||||
renpysound.init(renpy.config.sound_sample_rate, 2, bufsize, False, renpy.config.equal_mono)
|
||||
pcm_ok = True
|
||||
except:
|
||||
if renpy.config.debug_sound:
|
||||
|
||||
@@ -77,7 +77,7 @@ cdef extern from "renpysound_core.h":
|
||||
void RPS_set_video(int channel, int video)
|
||||
|
||||
void RPS_sample_surfaces(object, object)
|
||||
void RPS_init(int freq, int stereo, int samples, int status)
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono)
|
||||
void RPS_quit()
|
||||
|
||||
void RPS_periodic()
|
||||
@@ -354,7 +354,7 @@ def set_video(channel, video):
|
||||
else:
|
||||
RPS_set_video(channel, NO_VIDEO)
|
||||
|
||||
def init(freq, stereo, samples, status=False):
|
||||
def init(freq, stereo, samples, status=False, equal_mono=False):
|
||||
"""
|
||||
Initializes the audio system with the given parameters. The parameter are
|
||||
just informational - the audio system should be able to play all supported
|
||||
@@ -379,7 +379,7 @@ def init(freq, stereo, samples, status=False):
|
||||
else:
|
||||
status = 0
|
||||
|
||||
RPS_init(freq, stereo, samples, status)
|
||||
RPS_init(freq, stereo, samples, status, equal_mono)
|
||||
check_error()
|
||||
|
||||
def quit(): # @ReservedAssignment
|
||||
|
||||
+3
-2
@@ -86,6 +86,7 @@ def extra_imports():
|
||||
import cProfile; cProfile
|
||||
import pstats; pstats
|
||||
import _ssl; _ssl
|
||||
import SimpleHTTPServer; SimpleHTTPServer
|
||||
|
||||
# Used by requests.
|
||||
import cgi; cgi
|
||||
@@ -354,7 +355,7 @@ You may be using a system install of python. Please run {0}.sh,
|
||||
|
||||
renpy.audio.audio.quit()
|
||||
|
||||
|
||||
# Prevent subprocess from throwing errors while trying to run it's
|
||||
# __del__ method during shutdown.
|
||||
subprocess.Popen.__del__ = popen_del
|
||||
if not renpy.emscripten:
|
||||
subprocess.Popen.__del__ = popen_del
|
||||
|
||||
+11
-2
@@ -896,7 +896,11 @@ class ADVCharacter(object):
|
||||
images.predict_show(show_image)
|
||||
|
||||
else:
|
||||
trans, layer = renpy.config.say_attribute_transition_callback(self.image_tag, mode)
|
||||
|
||||
if renpy.config.say_attribute_transition_callback_attrs:
|
||||
trans, layer = renpy.config.say_attribute_transition_callback(self.image_tag, new_image, mode)
|
||||
else:
|
||||
trans, layer = renpy.config.say_attribute_transition_callback(self.image_tag, mode)
|
||||
|
||||
if not skip_trans:
|
||||
if (trans is not None) and (layer is not None):
|
||||
@@ -989,7 +993,12 @@ class ADVCharacter(object):
|
||||
if images.showing(None, (self.image_tag,)):
|
||||
|
||||
if not predicting:
|
||||
trans, layer = renpy.config.say_attribute_transition_callback(self.image_tag, "restore")
|
||||
new_image = images.apply_attributes(None, self.image_tag, image_with_attrs)
|
||||
|
||||
if renpy.config.say_attribute_transition_callback_attrs:
|
||||
trans, layer = renpy.config.say_attribute_transition_callback(self.image_tag, new_image, "restore")
|
||||
else:
|
||||
trans, layer = renpy.config.say_attribute_transition_callback(self.image_tag, "restore")
|
||||
|
||||
if interact:
|
||||
if (trans is not None) and (layer is not None):
|
||||
|
||||
@@ -33,7 +33,7 @@ init -1500 python hide:
|
||||
start = int(start, 16)
|
||||
end = int(end, 16) if end else start
|
||||
|
||||
rv.add("OpenDyslexic3-Regular.ttf", start, end)
|
||||
rv.add("_OpenDyslexic3-Regular.ttf", start, end)
|
||||
|
||||
rv.add(f, None, None)
|
||||
|
||||
@@ -41,8 +41,8 @@ init -1500 python hide:
|
||||
|
||||
config.font_transforms["opendyslexic"] = opendyslexic
|
||||
|
||||
config.ftfont_scale["OpenDyslexic3-Regular.ttf"] = .87
|
||||
config.ftfont_vertical_extent_scale["OpenDyslexic3-Regular.ttf"] = .66
|
||||
config.ftfont_scale["_OpenDyslexic3-Regular.ttf"] = .87
|
||||
config.ftfont_vertical_extent_scale["_OpenDyslexic3-Regular.ttf"] = .66
|
||||
|
||||
def dejavusans(f):
|
||||
return "DejaVuSans.ttf"
|
||||
|
||||
@@ -72,13 +72,17 @@ init -1500 python in build:
|
||||
( "renpy.py", "renpy"),
|
||||
|
||||
( "renpy/", "all"),
|
||||
( "renpy/**.py", "renpy"),
|
||||
( "renpy/**.pyx", "renpy"),
|
||||
( "renpy/**.pyd", "renpy"),
|
||||
( "renpy/**.pxi", "renpy"),
|
||||
( "renpy/common/", "all"),
|
||||
( "renpy/common/_compat/**", "renpy"),
|
||||
( "renpy/common/**.rpy", "renpy"),
|
||||
( "renpy/common/**.rpym", "renpy"),
|
||||
( "renpy/common/_compat/**", "renpy"),
|
||||
( "renpy/common/**", "all"),
|
||||
( "renpy/**", "renpy"),
|
||||
( "renpy/**", "all"),
|
||||
|
||||
# Ignore Ren'Py and renpy.exe.
|
||||
( "lib/*/renpy", None),
|
||||
@@ -329,8 +333,9 @@ init -1500 python in build:
|
||||
package("win", "zip", "windows renpy all", "Windows x86")
|
||||
package("market", "zip", "windows linux mac renpy all", "Windows, Mac, Linux for Markets")
|
||||
package("steam", "zip", "windows linux mac renpy all", hidden=True)
|
||||
package("android", "directory", "android renpy all", hidden=True, update=False, dlc=True)
|
||||
package("ios", "directory", "ios renpy all", hidden=True, update=False, dlc=True)
|
||||
package("android", "directory", "android all", hidden=True, update=False, dlc=True)
|
||||
package("ios", "directory", "ios all", hidden=True, update=False, dlc=True)
|
||||
package("web", "zip", "web all", update=False, dlc=True)
|
||||
|
||||
# Data that we expect the user to set.
|
||||
|
||||
@@ -427,7 +432,7 @@ init -1500 python in build:
|
||||
rv["renpy_patterns"] = excludes + renpy_patterns
|
||||
rv["xbit_patterns"] = xbit_patterns
|
||||
rv["version"] = version or directory_name
|
||||
rv["display_name"] = display_name or executable_name
|
||||
rv["display_name"] = display_name or config.name or executable_name
|
||||
|
||||
rv["exclude_empty_directories"] = exclude_empty_directories
|
||||
|
||||
|
||||
@@ -183,10 +183,26 @@ init -1900 python:
|
||||
if version <= (7, 1, 1):
|
||||
config.menu_actions = False
|
||||
|
||||
if version <= (7, 2, 2):
|
||||
config.say_attribute_transition_callback_attrs = False
|
||||
|
||||
# The version of Ren'Py this script is intended for, or
|
||||
# None if it's intended for the current version.
|
||||
config.script_version = None
|
||||
|
||||
python early hide:
|
||||
try:
|
||||
import ast
|
||||
script_version = renpy.file("script_version.txt").read()
|
||||
script_version = ast.literal_eval(script_version)
|
||||
|
||||
if script_version <= (7, 2, 2):
|
||||
config.keyword_after_python = True
|
||||
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
init -1000 python hide:
|
||||
try:
|
||||
import ast
|
||||
|
||||
@@ -140,6 +140,8 @@ init -1500 python in _console:
|
||||
aRepr.repr_RevertableList = aRepr.repr_list
|
||||
aRepr.repr_RevertableDict = aRepr.repr_dict
|
||||
aRepr.repr_RevertableSet = aRepr.repr_set
|
||||
aRepr.repr_defaultdict = aRepr.repr_dict
|
||||
aRepr.repr_OrderedDict = aRepr.repr_dict
|
||||
|
||||
# The list of traced expressions.
|
||||
class TracedExpressionsList(NoRollback, list):
|
||||
|
||||
@@ -373,7 +373,7 @@ init -1500 python:
|
||||
if not _preferences.performance_test and not performance_test:
|
||||
return
|
||||
|
||||
# Don't bother on android or ios - there's nothing the user can do.
|
||||
# Don't bother on android or ios or emscripten - there's nothing the user can do.
|
||||
if renpy.mobile:
|
||||
return
|
||||
|
||||
|
||||
+28
-3
@@ -514,6 +514,9 @@ statement_callbacks = [ ]
|
||||
# A list of file extensions that are blacklisted by autoreload.
|
||||
autoreload_blacklist = [ ".rpyc", ".rpymc", ".rpyb", ".pyc", ".pyo" ]
|
||||
|
||||
# A list of python modules that should be reloaded when appropriate.
|
||||
reload_modules = [ ]
|
||||
|
||||
# The layer dialogue is shown on.
|
||||
say_layer = "screens"
|
||||
|
||||
@@ -949,17 +952,38 @@ ftfont_scale = { }
|
||||
ftfont_vertical_extent_scale = { }
|
||||
|
||||
|
||||
def say_attribute_transition_callback(tag, mode):
|
||||
def say_attribute_transition_callback(*args):
|
||||
"""
|
||||
:args: (tag, attrs, mode)
|
||||
|
||||
Returns the say attribute transition to use, and the layer the transition
|
||||
should be applied to (with None being a valid layer.
|
||||
|
||||
Mode is one of "permanent", "temporary", or "restore"
|
||||
Attrs is the list of tags/attributes of the incoming image.
|
||||
|
||||
Mode is one of "permanent", "temporary", or "restore".
|
||||
"""
|
||||
|
||||
return renpy.config.say_attribute_transition, renpy.config.say_attribute_transition_layer
|
||||
|
||||
|
||||
# Should say_attribute_transition_callback take attrs?
|
||||
say_attribute_transition_callback_attrs = True
|
||||
|
||||
# The function used by renpy.notify
|
||||
notify = None
|
||||
|
||||
# Should Ren'Py support a SL2 keyword after a Python statement?
|
||||
keyword_after_python = False
|
||||
|
||||
# A label Ren'Py should jump to if a load fails.
|
||||
load_failed_label = None
|
||||
|
||||
# If true, Ren'Py distributes mono to both stereo channels. If false,
|
||||
# it splits it 50/50.
|
||||
equal_mono = True
|
||||
|
||||
|
||||
del os
|
||||
del collections
|
||||
|
||||
@@ -979,4 +1003,5 @@ def init():
|
||||
global tts_function
|
||||
tts_function = renpy.display.tts.default_tts_function
|
||||
|
||||
import os
|
||||
global notify
|
||||
notify = renpy.exports.display_notify
|
||||
|
||||
+14
-2
@@ -2118,7 +2118,7 @@ class Interface(object):
|
||||
if not self.started:
|
||||
return
|
||||
|
||||
if background:
|
||||
if background and not renpy.emscripten:
|
||||
self.bgscreenshot_event.clear()
|
||||
self.bgscreenshot_needed = True
|
||||
|
||||
@@ -2194,6 +2194,9 @@ class Interface(object):
|
||||
|
||||
try:
|
||||
renpy.display.scale.image_save_unscaled(window, filename)
|
||||
if renpy.emscripten:
|
||||
import emscripten
|
||||
emscripten.run_script(r'''FSDownload('%s')''' % filename)
|
||||
return True
|
||||
except:
|
||||
if renpy.config.debug:
|
||||
@@ -2299,6 +2302,7 @@ class Interface(object):
|
||||
ev = pygame.event.poll()
|
||||
|
||||
if ev.type == pygame.NOEVENT:
|
||||
self.check_background_screenshot()
|
||||
# Seems to prevent the CPU from speeding up.
|
||||
renpy.display.draw.event_peek_sleep()
|
||||
return None
|
||||
@@ -2802,9 +2806,17 @@ class Interface(object):
|
||||
if not expensive:
|
||||
step += 1
|
||||
|
||||
# Step 4: Autosave.
|
||||
# Step 4: Preload images (on emscripten)
|
||||
elif step == 4:
|
||||
|
||||
if expensive and renpy.emscripten:
|
||||
renpy.display.im.cache.preload_thread_pass()
|
||||
|
||||
step += 1
|
||||
|
||||
# Step 5: Autosave.
|
||||
elif step == 5:
|
||||
|
||||
if not self.did_autosave:
|
||||
renpy.loadsave.autosave()
|
||||
renpy.persistent.check_update()
|
||||
|
||||
+53
-51
@@ -442,69 +442,71 @@ class Cache(object):
|
||||
self.preload_lock.wait()
|
||||
self.preload_lock.release()
|
||||
|
||||
while self.preloads and self.keep_preloading:
|
||||
def preload_thread_pass(self):
|
||||
|
||||
# If the size of the current generation is bigger than the
|
||||
# total cache size, stop preloading.
|
||||
with self.lock:
|
||||
|
||||
# If the cache is overfull, clean it out.
|
||||
if not self.cleanout():
|
||||
|
||||
if renpy.config.debug_image_cache:
|
||||
for i in self.preloads:
|
||||
renpy.display.ic_log.write("Overfull %r", i)
|
||||
|
||||
self.preloads = [ ]
|
||||
|
||||
break
|
||||
|
||||
try:
|
||||
image = self.preloads.pop(0)
|
||||
|
||||
if image not in self.preload_blacklist:
|
||||
try:
|
||||
self.preload_texture(image)
|
||||
except:
|
||||
self.preload_blacklist.add(image)
|
||||
except:
|
||||
pass
|
||||
while self.preloads and self.keep_preloading:
|
||||
|
||||
# If the size of the current generation is bigger than the
|
||||
# total cache size, stop preloading.
|
||||
with self.lock:
|
||||
self.cleanout()
|
||||
|
||||
# If we have time, preload pinned images.
|
||||
if self.keep_preloading and not renpy.game.less_memory:
|
||||
# If the cache is overfull, clean it out.
|
||||
if not self.cleanout():
|
||||
|
||||
workset = set(renpy.store._cache_pin_set)
|
||||
if renpy.config.debug_image_cache:
|
||||
for i in self.preloads:
|
||||
renpy.display.ic_log.write("Overfull %r", i)
|
||||
|
||||
# Remove things that are not in the workset from the pin cache,
|
||||
# and remove things that are in the workset from pin cache.
|
||||
for i in self.pin_cache.keys():
|
||||
self.preloads = [ ]
|
||||
|
||||
if i in workset:
|
||||
workset.remove(i)
|
||||
else:
|
||||
surf = self.pin_cache[i]
|
||||
break
|
||||
|
||||
del self.pin_cache[i]
|
||||
|
||||
# For each image in the worklist...
|
||||
for image in workset:
|
||||
|
||||
if image in self.preload_blacklist:
|
||||
continue
|
||||
|
||||
# If we have normal preloads, break out.
|
||||
if self.preloads:
|
||||
break
|
||||
try:
|
||||
image = self.preloads.pop(0)
|
||||
|
||||
if image not in self.preload_blacklist:
|
||||
try:
|
||||
surf = image.load()
|
||||
self.pin_cache[image] = surf
|
||||
renpy.display.draw.load_texture(surf)
|
||||
self.preload_texture(image)
|
||||
except:
|
||||
self.preload_blacklist.add(image)
|
||||
except:
|
||||
pass
|
||||
|
||||
with self.lock:
|
||||
self.cleanout()
|
||||
|
||||
# If we have time, preload pinned images.
|
||||
if self.keep_preloading and not renpy.game.less_memory:
|
||||
|
||||
workset = set(renpy.store._cache_pin_set)
|
||||
|
||||
# Remove things that are not in the workset from the pin cache,
|
||||
# and remove things that are in the workset from pin cache.
|
||||
for i in self.pin_cache.keys():
|
||||
|
||||
if i in workset:
|
||||
workset.remove(i)
|
||||
else:
|
||||
surf = self.pin_cache[i]
|
||||
|
||||
del self.pin_cache[i]
|
||||
|
||||
# For each image in the worklist...
|
||||
for image in workset:
|
||||
|
||||
if image in self.preload_blacklist:
|
||||
continue
|
||||
|
||||
# If we have normal preloads, break out.
|
||||
if self.preloads:
|
||||
break
|
||||
|
||||
try:
|
||||
surf = image.load()
|
||||
self.pin_cache[image] = surf
|
||||
renpy.display.draw.load_texture(surf)
|
||||
except:
|
||||
self.preload_blacklist.add(image)
|
||||
|
||||
def add_load_log(self, filename):
|
||||
|
||||
|
||||
+10
-1
@@ -197,6 +197,8 @@ class Screen(renpy.object.Object):
|
||||
This class stores information about the screen.
|
||||
"""
|
||||
|
||||
sensitive = "True"
|
||||
|
||||
def __init__(self,
|
||||
name,
|
||||
function,
|
||||
@@ -207,7 +209,8 @@ class Screen(renpy.object.Object):
|
||||
variant=None,
|
||||
parameters=False,
|
||||
location=None,
|
||||
layer="screens"):
|
||||
layer="screens",
|
||||
sensitive="True"):
|
||||
|
||||
# The name of this screen.
|
||||
if isinstance(name, basestring):
|
||||
@@ -256,6 +259,9 @@ class Screen(renpy.object.Object):
|
||||
# The layer the screen will be shown on.
|
||||
self.layer = layer
|
||||
|
||||
# Is this screen sensitive? An expression.
|
||||
self.sensitive = sensitive
|
||||
|
||||
global prepared
|
||||
global analyzed
|
||||
|
||||
@@ -691,6 +697,9 @@ class ScreenDisplayable(renpy.display.layout.Container):
|
||||
if (self.phase == OLD) or (self.phase == HIDE):
|
||||
return
|
||||
|
||||
if not renpy.python.py_eval(self.screen.sensitive):
|
||||
return
|
||||
|
||||
try:
|
||||
push_current_screen(self)
|
||||
|
||||
|
||||
+1
-1
@@ -533,7 +533,7 @@ class Context(renpy.object.Object):
|
||||
renpy.game.log.begin(force=force_rollback)
|
||||
|
||||
if self.rollback and self.force_checkpoint:
|
||||
renpy.game.log.checkpoint(hard=False)
|
||||
renpy.game.log.force_checkpoint = True
|
||||
self.force_checkpoint = False
|
||||
|
||||
self.seen = False
|
||||
|
||||
@@ -3009,6 +3009,19 @@ def notify(message):
|
||||
|
||||
Only one notification is displayed at a time. If a second notification
|
||||
is displayed, the first notification is replaced.
|
||||
|
||||
This function just calls :var:`config.notify`, allowing its implementation
|
||||
to be replaced by assigning a new function to that variable.
|
||||
"""
|
||||
|
||||
renpy.config.notify(message)
|
||||
|
||||
|
||||
def display_notify(message):
|
||||
"""
|
||||
:doc: other
|
||||
|
||||
The default implementation of :func:`renpy.notify`.
|
||||
"""
|
||||
|
||||
hide_screen('notify')
|
||||
|
||||
+1
-1
@@ -89,7 +89,7 @@ cdef class Environ:
|
||||
cdef void imageblend(self, double fraction, int ramp)
|
||||
cdef void set_vertex(self, float *vertices)
|
||||
cdef void set_texture(self, int unit, float *coords)
|
||||
cdef void set_color(self, float r, float g, float b, float a)
|
||||
cdef void set_color(self, double r, double g, double b, double a)
|
||||
cdef void set_clip(self, tuple clip_box, GLDraw draw)
|
||||
cdef void unset_clip(self, GLDraw draw)
|
||||
cdef void ortho(self, double left, double right, double bottom, double top, double near, double far)
|
||||
|
||||
+13
-2
@@ -528,6 +528,14 @@ cdef class GLDraw:
|
||||
self.always_opaque = True
|
||||
gltexture.use_gles()
|
||||
|
||||
elif renpy.emscripten:
|
||||
# give back control to browser regularly
|
||||
self.redraw_period = 0.1
|
||||
# True messes alpha imagemap/imagebutton mouseover
|
||||
self.always_opaque = False
|
||||
# WebGL is GLES
|
||||
gltexture.use_gles()
|
||||
|
||||
else:
|
||||
gltexture.use_gl()
|
||||
|
||||
@@ -637,7 +645,7 @@ cdef class GLDraw:
|
||||
# ANGLE from working with fbo on Windows.
|
||||
|
||||
use_fbo = (
|
||||
renpy.ios or renpy.android or (EGL and not ANGLE) or
|
||||
renpy.ios or renpy.android or renpy.emscripten or (EGL and not ANGLE) or
|
||||
use_subsystem(
|
||||
glrtt_fbo,
|
||||
"RENPY_GL_RTT",
|
||||
@@ -1206,6 +1214,9 @@ cdef class GLDraw:
|
||||
|
||||
what.kill()
|
||||
|
||||
if renpy.emscripten:
|
||||
renpy.display.interface.force_redraw = True
|
||||
|
||||
return a
|
||||
|
||||
|
||||
@@ -1492,7 +1503,7 @@ cdef class Environ(object):
|
||||
Sets the array of texture coordinates for unit `unit`.
|
||||
"""
|
||||
|
||||
cdef void set_color(self, float r, float g, float b, float a):
|
||||
cdef void set_color(self, double r, double g, double b, double a):
|
||||
"""
|
||||
Sets the color to be shown.
|
||||
"""
|
||||
|
||||
@@ -319,7 +319,7 @@ cdef class FixedFunctionEnviron(Environ):
|
||||
else:
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY)
|
||||
|
||||
cdef void set_color(self, float r, float g, float b, float a):
|
||||
cdef void set_color(self, double r, double g, double b, double a):
|
||||
glColor4f(r, g, b, a)
|
||||
|
||||
cdef void ortho(self, double left, double right, double bottom, double top, double near, double far):
|
||||
|
||||
@@ -182,7 +182,7 @@ cdef class LimitedEnviron(Environ):
|
||||
else:
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY)
|
||||
|
||||
cdef void set_color(self, float r, float g, float b, float a):
|
||||
cdef void set_color(self, double r, double g, double b, double a):
|
||||
glColor4f(r, g, b, a)
|
||||
|
||||
|
||||
|
||||
@@ -566,7 +566,7 @@ cdef class ShaderEnviron(Environ):
|
||||
else:
|
||||
glDisableVertexAttribArrayARB(tex)
|
||||
|
||||
cdef void set_color(self, float r, float g, float b, float a):
|
||||
cdef void set_color(self, double r, double g, double b, double a):
|
||||
glUniform4fARB(self.program.Color, r, g, b, a)
|
||||
|
||||
cdef void ortho(self, double left, double right, double bottom, double top, double near, double far):
|
||||
|
||||
+1
-1
@@ -744,7 +744,7 @@ class RenpyImporter(object):
|
||||
code = compile(source, filename, 'exec', renpy.python.old_compile_flags, 1)
|
||||
exec code in mod.__dict__
|
||||
|
||||
return mod
|
||||
return sys.modules[fullname]
|
||||
|
||||
def get_data(self, filename):
|
||||
return load(filename).read()
|
||||
|
||||
+11
-3
@@ -474,6 +474,9 @@ def autosave_thread(take_screenshot):
|
||||
|
||||
finally:
|
||||
autosave_not_running.set()
|
||||
if renpy.emscripten:
|
||||
import emscripten
|
||||
emscripten.syncfs()
|
||||
|
||||
|
||||
def autosave():
|
||||
@@ -550,9 +553,14 @@ def force_autosave(take_screenshot=False, block=False):
|
||||
return
|
||||
|
||||
autosave_not_running.clear()
|
||||
t = threading.Thread(target=autosave_thread, args=(take_screenshot,))
|
||||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
if not renpy.emscripten:
|
||||
t = threading.Thread(target=autosave_thread, args=(take_screenshot,))
|
||||
t.daemon = True
|
||||
t.start()
|
||||
else:
|
||||
import emscripten
|
||||
emscripten.async_call(autosave_thread, take_screenshot, -1)
|
||||
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -51,6 +51,20 @@ from renpy.python import store_eval as eval
|
||||
|
||||
from renpy.display.core import absolute
|
||||
|
||||
_print = print
|
||||
|
||||
|
||||
def print(*args, **kwargs):
|
||||
"""
|
||||
:undocumented:
|
||||
|
||||
This is a variant of the print function that forces a checkpoint
|
||||
at the start of the next statement, so that it can't be rolled past.
|
||||
"""
|
||||
|
||||
renpy.game.context().force_checkpoint = True
|
||||
_print(*args, **kwargs)
|
||||
|
||||
|
||||
def _(s):
|
||||
"""
|
||||
|
||||
+37
-8
@@ -1309,6 +1309,7 @@ class RollbackLog(renpy.object.Object):
|
||||
|
||||
nosave = [ 'old_store', 'mutated', 'identifier_cache' ]
|
||||
identifier_cache = None
|
||||
force_checkpoint = False
|
||||
|
||||
def __init__(self):
|
||||
|
||||
@@ -1338,6 +1339,10 @@ class RollbackLog(renpy.object.Object):
|
||||
# reset?
|
||||
self.did_interaction = True
|
||||
|
||||
# Should we force a checkpoint before completing the current
|
||||
# statement.
|
||||
self.force_checkpoint = False
|
||||
|
||||
def after_setstate(self):
|
||||
self.mutated = { }
|
||||
self.rolled_forward = False
|
||||
@@ -1451,6 +1456,10 @@ class RollbackLog(renpy.object.Object):
|
||||
Should be true if called from begin().
|
||||
"""
|
||||
|
||||
if self.force_checkpoint:
|
||||
self.checkpoint(hard=False)
|
||||
self.force_checkpoint = False
|
||||
|
||||
# Update self.current.stores with the changes from each store.
|
||||
# Also updates .ever_been_changed.
|
||||
for name, sd in store_dicts.iteritems():
|
||||
@@ -1592,9 +1601,9 @@ class RollbackLog(renpy.object.Object):
|
||||
fwd_name, fwd_data = self.forward[0]
|
||||
|
||||
if (self.current.context.current == fwd_name
|
||||
and data == fwd_data
|
||||
and (keep_rollback or self.rolled_forward)
|
||||
):
|
||||
and data == fwd_data
|
||||
and (keep_rollback or self.rolled_forward)
|
||||
):
|
||||
self.forward.pop(0)
|
||||
else:
|
||||
del self.forward[:]
|
||||
@@ -1646,6 +1655,25 @@ class RollbackLog(renpy.object.Object):
|
||||
|
||||
return self.rollback_limit > 0
|
||||
|
||||
def load_failed(self):
|
||||
"""
|
||||
This is called to try to recover when rollback fails.
|
||||
"""
|
||||
|
||||
if not renpy.config.load_failed_label:
|
||||
raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
|
||||
|
||||
rb = self.log.pop()
|
||||
rb.rollback()
|
||||
|
||||
while renpy.exports.call_stack_depth():
|
||||
renpy.exports.pop_call()
|
||||
|
||||
renpy.game.contexts[0].force_checkpoint = True
|
||||
renpy.game.contexts[0].goto_label(renpy.config.load_failed_label)
|
||||
|
||||
raise renpy.game.RestartTopContext()
|
||||
|
||||
def rollback(self, checkpoints, force=False, label=None, greedy=True, on_load=False, abnormal=True, current_label=None):
|
||||
"""
|
||||
This rolls the system back to the first valid rollback point
|
||||
@@ -1709,15 +1737,16 @@ class RollbackLog(renpy.object.Object):
|
||||
break
|
||||
|
||||
else:
|
||||
if force:
|
||||
raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
|
||||
|
||||
# Otherwise, just give up.
|
||||
|
||||
print("Can't find a place to rollback to. Not rolling back.")
|
||||
|
||||
revlog.reverse()
|
||||
self.log.extend(revlog)
|
||||
|
||||
if force:
|
||||
self.load_failed()
|
||||
else:
|
||||
print("Can't find a place to rollback to. Not rolling back.")
|
||||
|
||||
return
|
||||
|
||||
force_checkpoint = False
|
||||
|
||||
@@ -263,6 +263,11 @@ class Script(object):
|
||||
initcode = [ ]
|
||||
|
||||
for fn, dir in script_files: # @ReservedAssignment
|
||||
# Mitigate "busy script" warning from the browser
|
||||
if renpy.emscripten:
|
||||
import emscripten
|
||||
emscripten.sleep(0)
|
||||
|
||||
self.load_appropriate_file(".rpyc", ".rpy", dir, fn, initcode)
|
||||
|
||||
# Make the sort stable.
|
||||
|
||||
@@ -301,6 +301,13 @@ class SLNode(object):
|
||||
|
||||
return False
|
||||
|
||||
def has_python(self):
|
||||
"""
|
||||
Returns true if this node is Python or has a python node as a child.
|
||||
"""
|
||||
|
||||
return False
|
||||
|
||||
|
||||
# A sentinel used to indicate a keyword argument was not given.
|
||||
NotGiven = renpy.object.Sentinel("NotGiven")
|
||||
@@ -451,6 +458,9 @@ class SLBlock(SLNode):
|
||||
|
||||
return False
|
||||
|
||||
def has_python(self):
|
||||
return any(i.has_python() for i in self.children)
|
||||
|
||||
|
||||
list_or_tuple = (list, tuple)
|
||||
|
||||
@@ -1265,6 +1275,9 @@ class SLIf(SLNode):
|
||||
|
||||
return False
|
||||
|
||||
def has_python(self):
|
||||
return any(i[1].has_python() for i in self.entries)
|
||||
|
||||
|
||||
class SLShowIf(SLNode):
|
||||
"""
|
||||
@@ -1354,6 +1367,9 @@ class SLShowIf(SLNode):
|
||||
|
||||
return False
|
||||
|
||||
def has_python(self):
|
||||
return any(i[1].has_python() for i in self.entries)
|
||||
|
||||
|
||||
class SLFor(SLBlock):
|
||||
"""
|
||||
@@ -1514,6 +1530,9 @@ class SLPython(SLNode):
|
||||
self.constant = NOT_CONST
|
||||
self.last_keyword = True
|
||||
|
||||
def has_python(self):
|
||||
return True
|
||||
|
||||
|
||||
class SLPass(SLNode):
|
||||
|
||||
@@ -1559,6 +1578,9 @@ class SLDefault(SLNode):
|
||||
|
||||
scope[variable] = eval(self.expr, context.globals, scope)
|
||||
|
||||
def has_python(self):
|
||||
return True
|
||||
|
||||
|
||||
class SLUse(SLNode):
|
||||
|
||||
@@ -1862,6 +1884,7 @@ class SLScreen(SLBlock):
|
||||
analysis = None
|
||||
|
||||
layer = "'screens'"
|
||||
sensitive = "True"
|
||||
|
||||
def __init__(self, loc):
|
||||
|
||||
@@ -1885,6 +1908,9 @@ class SLScreen(SLBlock):
|
||||
# Should we predict this screen?
|
||||
self.predict = "None" # expr.
|
||||
|
||||
# Should this screen be sensitive.
|
||||
self.sensitive = "True"
|
||||
|
||||
# The parameters this screen takes.
|
||||
self.parameters = None
|
||||
|
||||
@@ -1905,6 +1931,7 @@ class SLScreen(SLBlock):
|
||||
rv.variant = self.variant
|
||||
rv.predict = self.predict
|
||||
rv.parameters = self.parameters
|
||||
rv.sensitive = self.sensitive
|
||||
|
||||
rv.prepared = False
|
||||
rv.analysis = None
|
||||
@@ -1928,6 +1955,7 @@ class SLScreen(SLBlock):
|
||||
parameters=self.parameters,
|
||||
location=self.location,
|
||||
layer=renpy.python.py_eval(self.layer),
|
||||
sensitive=self.sensitive,
|
||||
)
|
||||
|
||||
def analyze(self, analysis):
|
||||
|
||||
+39
-22
@@ -25,6 +25,8 @@ import collections
|
||||
import renpy.sl2
|
||||
import renpy.sl2.slast as slast
|
||||
|
||||
from ast import literal_eval
|
||||
|
||||
# A tuple of style prefixes that we know of.
|
||||
STYLE_PREFIXES = [
|
||||
'',
|
||||
@@ -166,23 +168,23 @@ class Parser(object):
|
||||
elif isinstance(i, Parser):
|
||||
self.children[i.name] = i
|
||||
|
||||
def parse_statement(self, loc, l, layout_mode=False):
|
||||
def parse_statement(self, loc, l, layout_mode=False, keyword=True):
|
||||
word = l.word() or l.match(r'\$')
|
||||
|
||||
if word and word in self.children:
|
||||
if layout_mode:
|
||||
c = self.children[word].parse_layout(loc, l, self)
|
||||
c = self.children[word].parse_layout(loc, l, self, keyword)
|
||||
else:
|
||||
c = self.children[word].parse(loc, l, self)
|
||||
c = self.children[word].parse(loc, l, self, keyword)
|
||||
|
||||
return c
|
||||
else:
|
||||
return None
|
||||
|
||||
def parse_layout(self, loc, l, parent):
|
||||
def parse_layout(self, loc, l, parent, keyword):
|
||||
l.error("The %s statement cannot be used as a container for the has statement." % self.name)
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
"""
|
||||
This is expected to parse a function statement, and to return
|
||||
a list of python ast statements.
|
||||
@@ -199,7 +201,7 @@ class Parser(object):
|
||||
|
||||
raise Exception("Not Implemented")
|
||||
|
||||
def parse_contents(self, l, target, layout_mode=False, can_has=False, can_tag=False, block_only=False):
|
||||
def parse_contents(self, l, target, layout_mode=False, can_has=False, can_tag=False, block_only=False, keyword=True):
|
||||
"""
|
||||
Parses the remainder of the current line of `l`, and all of its subblock,
|
||||
looking for keywords and children.
|
||||
@@ -255,6 +257,12 @@ class Parser(object):
|
||||
|
||||
expr = l.comma_expression()
|
||||
|
||||
if (not keyword) and (not renpy.config.keyword_after_python):
|
||||
try:
|
||||
literal_eval(expr)
|
||||
except:
|
||||
l.error("a non-constant keyword argument like '%s %s' is not allowed after a python block." % (name, expr))
|
||||
|
||||
target.keyword.append((name, expr))
|
||||
|
||||
if block_only:
|
||||
@@ -309,13 +317,16 @@ class Parser(object):
|
||||
if child_index != 0:
|
||||
l.error("The has statement may not be given after a child has been supplied.")
|
||||
|
||||
c = self.parse_statement(loc, l, layout_mode=True)
|
||||
c = self.parse_statement(loc, l, layout_mode=True, keyword=keyword)
|
||||
|
||||
if c is None:
|
||||
l.error('Has expects a child statement.')
|
||||
|
||||
target.children.append(c)
|
||||
|
||||
if c.has_python():
|
||||
keyword = False
|
||||
|
||||
continue
|
||||
|
||||
c = self.parse_statement(loc, l)
|
||||
@@ -328,6 +339,10 @@ class Parser(object):
|
||||
if c is not None:
|
||||
target.children.append(c)
|
||||
child_index += 1
|
||||
|
||||
if c.has_python():
|
||||
keyword = False
|
||||
|
||||
continue
|
||||
|
||||
l.revert(state)
|
||||
@@ -553,10 +568,10 @@ class DisplayableParser(Parser):
|
||||
add(renpy.sl2.slproperties.ui_properties)
|
||||
add(renpy.sl2.slproperties.position_properties)
|
||||
|
||||
def parse_layout(self, loc, l, parent):
|
||||
return self.parse(loc, l, parent, True)
|
||||
def parse_layout(self, loc, l, parent, keyword):
|
||||
return self.parse(loc, l, parent, keyword, layout_mode=True)
|
||||
|
||||
def parse(self, loc, l, parent, layout_mode=False):
|
||||
def parse(self, loc, l, parent, keyword, layout_mode=False):
|
||||
|
||||
rv = slast.SLDisplayable(
|
||||
loc,
|
||||
@@ -612,7 +627,7 @@ class IfParser(Parser):
|
||||
if not parent_contents:
|
||||
childbearing_statements.add(self)
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
if self.parent_contents:
|
||||
contents_from = parent
|
||||
@@ -642,7 +657,7 @@ class IfParser(Parser):
|
||||
l.require(':')
|
||||
|
||||
block = slast.SLBlock(loc)
|
||||
contents_from.parse_contents(l, block, block_only=True)
|
||||
contents_from.parse_contents(l, block, block_only=True, keyword=keyword)
|
||||
|
||||
rv.entries.append((condition, block))
|
||||
|
||||
@@ -654,7 +669,7 @@ class IfParser(Parser):
|
||||
l.require(':')
|
||||
|
||||
block = slast.SLBlock(loc)
|
||||
contents_from.parse_contents(l, block, block_only=True)
|
||||
contents_from.parse_contents(l, block, block_only=True, keyword=keyword)
|
||||
|
||||
rv.entries.append((condition, block))
|
||||
|
||||
@@ -713,7 +728,7 @@ class ForParser(Parser):
|
||||
|
||||
l.error("expected variable or tuple pattern.")
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
l.skip_whitespace()
|
||||
|
||||
@@ -755,7 +770,7 @@ ForParser("for")
|
||||
|
||||
class OneLinePythonParser(Parser):
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
loc = l.get_location()
|
||||
source = l.require(l.rest_statement)
|
||||
@@ -772,7 +787,7 @@ OneLinePythonParser("$")
|
||||
|
||||
class MultiLinePythonParser(Parser):
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
loc = l.get_location()
|
||||
|
||||
@@ -792,7 +807,7 @@ MultiLinePythonParser("python")
|
||||
|
||||
class PassParser(Parser):
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
l.expect_eol()
|
||||
|
||||
@@ -804,7 +819,7 @@ PassParser("pass")
|
||||
|
||||
class DefaultParser(Parser):
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
name = l.require(l.word)
|
||||
l.require(r'=')
|
||||
@@ -825,7 +840,7 @@ class UseParser(Parser):
|
||||
super(UseParser, self).__init__(name)
|
||||
childbearing_statements.add(self)
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
if l.keyword('expression'):
|
||||
target = l.require(l.simple_expression)
|
||||
@@ -863,7 +878,7 @@ Keyword("style_group")
|
||||
|
||||
class TranscludeParser(Parser):
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
l.expect_eol()
|
||||
return slast.SLTransclude(loc)
|
||||
|
||||
@@ -928,7 +943,7 @@ class CustomParser(Parser):
|
||||
# The number of positional parameters required.
|
||||
self.positional = positional
|
||||
|
||||
def parse(self, loc, l, parent):
|
||||
def parse(self, loc, l, parent, keyword):
|
||||
|
||||
arguments = [ ]
|
||||
|
||||
@@ -961,7 +976,7 @@ class ScreenParser(Parser):
|
||||
def __init__(self):
|
||||
super(ScreenParser, self).__init__("screen", statement=False)
|
||||
|
||||
def parse(self, loc, l, parent, name="_name"):
|
||||
def parse(self, loc, l, parent, name="_name", keyword=True):
|
||||
|
||||
screen = slast.SLScreen(loc)
|
||||
|
||||
@@ -977,6 +992,7 @@ class ScreenParser(Parser):
|
||||
screen.variant = keyword.get("variant", "None")
|
||||
screen.predict = keyword.get("predict", "None")
|
||||
screen.layer = keyword.get("layer", "'screens'")
|
||||
screen.sensitive = keyword.get("sensitive", "True")
|
||||
|
||||
return screen
|
||||
|
||||
@@ -989,6 +1005,7 @@ Keyword("predict")
|
||||
Keyword("style_group")
|
||||
Keyword("style_prefix")
|
||||
Keyword("layer")
|
||||
Keyword("sensitive")
|
||||
parser = None
|
||||
|
||||
|
||||
|
||||
@@ -183,6 +183,15 @@ class Formatter(string.Formatter):
|
||||
|
||||
value = value.replace("{", "{{")
|
||||
|
||||
if "u" in conversion:
|
||||
value = value.upper()
|
||||
|
||||
if "l" in conversion:
|
||||
value = value.lower()
|
||||
|
||||
if "c" in conversion:
|
||||
value = value.capitalize()
|
||||
|
||||
return value
|
||||
|
||||
|
||||
|
||||
@@ -384,6 +384,10 @@ class BMFont(ImageFont):
|
||||
self.width[c] = w + xo
|
||||
self.advance[c] = xadvance
|
||||
self.offsets[c] = (xo, yo)
|
||||
elif kind == "kerning":
|
||||
first = unichr(int(args["first"]))
|
||||
second = unichr(int(args["second"]))
|
||||
self.kerns[first + second] = int(args["amount"])
|
||||
|
||||
f.close()
|
||||
|
||||
|
||||
@@ -637,6 +637,8 @@ def change_language(language, force=False):
|
||||
else:
|
||||
old_change_language(tl, language)
|
||||
|
||||
renpy.store._history_list = [ ]
|
||||
|
||||
for i in renpy.config.change_language_callbacks:
|
||||
i()
|
||||
|
||||
|
||||
+1499
File diff suppressed because it is too large
Load Diff
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "$0 requires a version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RENPY="$(dirname $0)/.."
|
||||
|
||||
butler () {
|
||||
"$RENPY/tmp/butler-linux-amd64/butler" "$@"
|
||||
}
|
||||
|
||||
D="$RENPY/dl/$1"
|
||||
P=renpytom/renpy-mirror
|
||||
|
||||
butler push "$D/renpy-$1-sdk.zip" $P:sdk-windows-mac-linux
|
||||
|
||||
butler push "$D/renpy-$1-rapt.zip" $P:rapt
|
||||
butler push "$D/renpy-$1-raspi.tar.bz2" $P:raspi
|
||||
butler push "$D/renpy-$1-renios.zip" $P:renios
|
||||
|
||||
butler push "$D/renpy-$1-atom-linux.tar.bz2" $P:atom-linux
|
||||
butler push "$D/renpy-$1-atom-mac.zip" $P:atom-mac
|
||||
butler push "$D/renpy-$1-atom-windows.zip" $P:atom-windows
|
||||
|
||||
butler push "$D/renpy-$1-editra-linux.tar.bz2" $P:editra-linux
|
||||
butler push "$D/renpy-$1-editra-mac.zip" $P:editra-mac
|
||||
butler push "$D/renpy-$1-editra-windows.zip" $P:editra-windows
|
||||
@@ -165,8 +165,9 @@ These control transitions between various screens.
|
||||
This is a function that return a transition to apply and a layer to
|
||||
apply it on
|
||||
|
||||
This should be a function that takes two arguments, the image tag
|
||||
being shown, and a `mode` parameter that is one of:
|
||||
This should be a function that takes three arguments, the image tag
|
||||
being shown, a tuple of tags describing the image being shown, and a
|
||||
`mode` parameter that is one of:
|
||||
|
||||
* "permanent", for permanent attribute change (one that lasts longer
|
||||
than the current say statement).
|
||||
@@ -549,6 +550,13 @@ Occasionally Used
|
||||
If not None, this should be a string giving the default language
|
||||
that the game is translated into by the translation framework.
|
||||
|
||||
.. var:: config.load_failed_label = None
|
||||
|
||||
If a string, this is a label that is jumped to when a load fails because
|
||||
the script has changed so much that Ren'Py can't recover.
|
||||
Before performing the load, Ren'Py will revert to the start of the
|
||||
last statement, then it will clear the call stack.
|
||||
|
||||
.. var:: config.locale_to_language_function = ...
|
||||
|
||||
A function that determines the language the game should use,
|
||||
@@ -656,6 +664,13 @@ Occasionally Used
|
||||
Uses nearest-neighbor filtering by default, to support pixel art or
|
||||
melting players' eyes.
|
||||
|
||||
.. var:: config.notify = ...
|
||||
|
||||
This is called by :func:`renpy.notify` or :func:`Notify` with a
|
||||
single `message` argument, to display the notification. The default
|
||||
implementation is :funct:`renpy.display_notify`. This is intended
|
||||
to allow creators to intercept notifications.
|
||||
|
||||
.. var:: config.optimize_texture_bounds = False
|
||||
|
||||
When True, Ren'Py will scan images to find the bounding box of the
|
||||
@@ -703,6 +718,12 @@ Occasionally Used
|
||||
a window. The default action prompts the user to see if he wants
|
||||
to quit the game.
|
||||
|
||||
.. var:: config.reload_modules = [ ]
|
||||
|
||||
A list of strings giving the names of python modules that should be
|
||||
reloaded along with the game. Any submodules of these modules
|
||||
will also be reloaded.
|
||||
|
||||
.. var:: config.replace_text = None
|
||||
|
||||
If not None, a function that is called with a single argument, a text to
|
||||
|
||||
@@ -12,6 +12,14 @@ features.
|
||||
Incompatible changes to the GUI are documented at :ref:`gui-changes`, as
|
||||
such changes only take effect when the GUI is regenerated.
|
||||
|
||||
.. _incompatible-7.2.2:
|
||||
|
||||
7.2.2
|
||||
-----
|
||||
|
||||
:var:`config.say_attribute_transition_callback` has been changed to
|
||||
accept a new argument, the image being displayed.
|
||||
|
||||
|
||||
.. _incompatible-7.1.1:
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ support can be used for many things, from setting a flag to creating
|
||||
new displayables. This chapter covers ways in which Ren'Py scripts can
|
||||
directly invoke Python, through the various Python statements.
|
||||
|
||||
Ren'Py currently supports Python 2.7, though we strongly recommend you write
|
||||
Python that runs in Python 2 and Python 3.
|
||||
|
||||
.. _python-statement:
|
||||
|
||||
|
||||
@@ -603,7 +603,8 @@ using a Python assignment statement. ::
|
||||
Lines beginning with a dollar-sign are interpreted as Python statements. The
|
||||
assignment statement here assigns a value to a variable. Ren'Py has support
|
||||
for other ways of including Python, such as a multi-line Python statement,
|
||||
that are discussed in other sections of this manual.
|
||||
that are discussed in other sections of this manual. Ren'Py supports Python 2.7,
|
||||
though we strongly recommend you write Python that runs in Python 2 and Python 3.
|
||||
|
||||
To check the flag, use the ``if`` statement::
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ formatting syntax. Ren'Py uses [ to introduce string formatting
|
||||
because { was taken by text tags.
|
||||
|
||||
Along with the ``!s`` and ``!r`` conversion flags supported by Python, Ren'Py
|
||||
supports ``!q`` and ``!t`` conversion flags. The ``!q`` conversion flag ensures that
|
||||
supports several more flags. The ``!q`` conversion flag ensures that
|
||||
text tags are properly quoted, so that displaying a string will not
|
||||
introduce unwanted formatting constructs. For example::
|
||||
|
||||
@@ -112,6 +112,10 @@ The ``!t`` flag will translate the interpolated string::
|
||||
g "I'm [mood!t] to see you."
|
||||
|
||||
|
||||
The ``!u`` flag forces the text to upper case, the ``!l`` flag forces the
|
||||
text to lower-case, and the ``!c`` flag capitalizes the text.
|
||||
|
||||
|
||||
Styling and Text Tags
|
||||
=====================
|
||||
|
||||
|
||||
@@ -1025,7 +1025,7 @@ translate french strings:
|
||||
|
||||
# _errorhandling.rpym:663
|
||||
old "Opens the errors.txt file in a text editor."
|
||||
new "Ouvrir le fihchier « errors.txt » dans un éditeur de texte."
|
||||
new "Ouvrir le fichier « errors.txt » dans un éditeur de texte."
|
||||
|
||||
# _errorhandling.rpym:667
|
||||
old "Copies the errors.txt file to the clipboard."
|
||||
|
||||
@@ -776,6 +776,7 @@ screen preferences():
|
||||
textbutton "English" text_font "DejaVuSans.ttf"action Language(None)
|
||||
textbutton "Français" text_font "DejaVuSans.ttf"action Language("french")
|
||||
textbutton "Русский" text_font "DejaVuSans.ttf" action Language("russian")
|
||||
textbutton "Español" text_font "DejaVuSans.ttf"action Language("spanish")
|
||||
|
||||
# This should be last.
|
||||
textbutton "Pig Latin" text_font "DejaVuSans.ttf" action Language("piglatin")
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# 01example.rpy:473
|
||||
old "Copied the example to the clipboard."
|
||||
new "Se copió el ejemplo al portapapeles."
|
||||
|
||||
# 01example.rpy:546
|
||||
old "copy"
|
||||
new "copiar"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,211 @@
|
||||
|
||||
# game/indepth_character.rpy:11
|
||||
translate spanish demo_character_e7e1b1bb:
|
||||
|
||||
# e "We've already seen how to define a Character in Ren'Py. But I want to go into a bit more detail as to what a Character is."
|
||||
e "Ya hemos visto cómo definir Character en Ren'Py, pero quiero entrar en más detalles sobre qué es un Character."
|
||||
|
||||
# game/indepth_character.rpy:17
|
||||
translate spanish demo_character_d7908a94:
|
||||
|
||||
# e "Here are couple of additional characters."
|
||||
e "Aquí hay un par de personajes adicionales."
|
||||
|
||||
# game/indepth_character.rpy:19
|
||||
translate spanish demo_character_275ef8b9:
|
||||
|
||||
# e "Each statement creates a Character object, and gives it a single argument, a name. If the name is None, no name is displayed."
|
||||
e "Cada sentencia crea un objeto Character y le da un solo argumento, un nombre. Si el nombre es None(Ninguno), no se muestra ningún nombre."
|
||||
|
||||
# game/indepth_character.rpy:21
|
||||
translate spanish demo_character_a63aea0c:
|
||||
|
||||
# e "This can be followed by named arguments that set properties of the character. A named argument is a property name, an equals sign, and a value."
|
||||
e "Esto puede ser seguido por argumentos con nombre que establecen las propiedades del personaje. Un argumento con nombre es el nombre de propiedad, un signo igual y un valor."
|
||||
|
||||
# game/indepth_character.rpy:23
|
||||
translate spanish demo_character_636a502e:
|
||||
|
||||
# e "Multiple arguments should be separated with commas, like they are here. Let's see those characters in action."
|
||||
e "Los argumentos múltiples se deben separar con comas, como están aquí. Veamos esos personajes en acción."
|
||||
|
||||
# game/indepth_character.rpy:27
|
||||
translate spanish demo_character_44b54e1d:
|
||||
|
||||
# e_shout "I can shout!"
|
||||
e_shout "Puedo gritar"
|
||||
|
||||
# game/indepth_character.rpy:29
|
||||
translate spanish demo_character_a9646dd8:
|
||||
|
||||
# e_whisper "And I can speak in a whisper."
|
||||
e_whisper "Y puedo hablar susurrando."
|
||||
|
||||
# game/indepth_character.rpy:31
|
||||
translate spanish demo_character_79793208:
|
||||
|
||||
# e "This example shows how the name Character is a bit of a misnomer. Here, we have multiple Characters in use, but you see it as me speaking."
|
||||
e "Este ejemplo muestra cómo el nombre Character es un poco inapropiado. Aquí, tenemos varios Characters en uso, pero los ves como mi hablar."
|
||||
|
||||
# game/indepth_character.rpy:33
|
||||
translate spanish demo_character_5d5d7482:
|
||||
|
||||
# e "It's best to think of a Character as repesenting a name and style, rather than a single person."
|
||||
e "Es mejor pensar que un Character representa un nombre y un estilo, en lugar de una sola persona."
|
||||
|
||||
# game/indepth_character.rpy:37
|
||||
translate spanish demo_character_66d08d98:
|
||||
|
||||
# e "There are a lot of properties that can be given to Characters, most of them prefixed styles."
|
||||
e "Hay muchas propiedades que se pueden asignar a los Characters, la mayoría de ellos con estilos prefijados."
|
||||
|
||||
# game/indepth_character.rpy:39
|
||||
translate spanish demo_character_7e0d75aa:
|
||||
|
||||
# e "Properties beginning with window apply to the textbox, those with what apply to the the dialogue, and those with who to the name of Character speaking."
|
||||
e "Las propiedades que comienzan con window se aplican al cuadro de texto, aquellas con what se aplican al diálogo y aquellas con who al nombre del Character que habla."
|
||||
|
||||
# game/indepth_character.rpy:41
|
||||
translate spanish demo_character_56703784:
|
||||
|
||||
# e "If you leave a prefix out, the style customizes the name of the speaker."
|
||||
e "Si dejas un prefijo, el estilo personaliza el nombre del orador."
|
||||
|
||||
# game/indepth_character.rpy:43
|
||||
translate spanish demo_character_b456f0a9:
|
||||
|
||||
# e "There are quite a few different properties that can be set this way. Here are some of the most useful."
|
||||
e "Hay bastantes propiedades diferentes que se pueden establecer de esta manera. Éstos son algunos de los más útiles."
|
||||
|
||||
# game/indepth_character.rpy:54
|
||||
translate spanish demo_character_18ba073d:
|
||||
|
||||
# e1a "If it's set to None, the textbox has no background window."
|
||||
e1a "Si está configurado como None, el cuadro de texto no tiene ventana de fondo."
|
||||
|
||||
# game/indepth_character.rpy:59
|
||||
translate spanish demo_character_5a26445c:
|
||||
|
||||
# e2 "The who_color and what_color properties set the color of the character's name and dialogue text, respectively."
|
||||
e2 "Las propiedades who_color y what_color establecen el color del texto del nombre y diálogo del personaje, respectivamente."
|
||||
|
||||
# game/indepth_character.rpy:61
|
||||
translate spanish demo_character_88a18c32:
|
||||
|
||||
# e2 "The colors are strings containing rgb hex codes, the same sort of colors understood by a web browser."
|
||||
e2 "Los colores son cadenas que contienen códigos hexadecimales rgb, el mismo tipo de colores que entiende un navegador web."
|
||||
|
||||
# game/indepth_character.rpy:67
|
||||
translate spanish demo_character_ed690751:
|
||||
|
||||
# e3 "Similarly, the who_font and what_font properties set the font used by the different kinds of text."
|
||||
e3 "De manera similar, las propiedades who_font y what_font establecen la fuente utilizada por los diferentes tipos de texto."
|
||||
|
||||
# game/indepth_character.rpy:74
|
||||
translate spanish demo_character_8dfa6426:
|
||||
|
||||
# e4 "Setting the who_bold, what_italic, and what_size properties makes the name bold, and the dialogue text italic at a size of 20 pixels."
|
||||
e4 "La configuración de las propiedades who_bold, what_italic y what_size hace que el nombre aparezca en negrita y el texto del diálogo en cursiva a un tamaño de 20 píxeles."
|
||||
|
||||
# game/indepth_character.rpy:76
|
||||
translate spanish demo_character_20e83c32:
|
||||
|
||||
# e4 "Of course, the what_bold, who_italic and who_size properties also exist, even if they're not used here."
|
||||
e4 "Por supuesto, las propiedades what_bold, who_italic y who_size también existen, incluso si no se usan aquí."
|
||||
|
||||
# game/indepth_character.rpy:83
|
||||
translate spanish demo_character_e4cbb1f2:
|
||||
|
||||
# e5 "The what_outlines property puts an outline around the text."
|
||||
e5 "La propiedad what_outlines coloca un contorno alrededor del texto."
|
||||
|
||||
# game/indepth_character.rpy:85
|
||||
translate spanish demo_character_71535ecf:
|
||||
|
||||
# e5 "It's a little complicated since it takes a list with a tuple in it, with the tuple being four things in parenthesis, and the list the square brackets around them."
|
||||
e5 "Es un poco complicado, ya que toma una lista con una tupla, con la tupla cuatro cosas entre paréntesis, y los corchetes de la lista a su alrededor."
|
||||
|
||||
# game/indepth_character.rpy:87
|
||||
translate spanish demo_character_e9ac7482:
|
||||
|
||||
# e5 "The first number is the size of the outline, in pixels. That's followed by a string giving the hex-code of the color of the outline, and the x and y offsets."
|
||||
e5 "El primer número es el tamaño del contorno, en píxeles. A esto le sigue una cadena que proporciona el código hexadecimal del color del contorno y las compensaciones de x e y."
|
||||
|
||||
# game/indepth_character.rpy:93
|
||||
translate spanish demo_character_ea72d988:
|
||||
|
||||
# e6 "When the outline size is 0 and the offsets are given, what_outlines can also act as a drop-shadow behind the text."
|
||||
e6 "Cuando el tamaño del contorno es 0 y se dan las compensaciones, what_outlines también puede actuar como una sombra detrás del texto."
|
||||
|
||||
# game/indepth_character.rpy:99
|
||||
translate spanish demo_character_8d35ebcd:
|
||||
|
||||
# e7 "The what_xalign and what_textalign properties control the alignment of text, with 0.0 being left, 0.5 being center, and 1.0 being right."
|
||||
e7 "Las propiedades what_xalign y what_textalign controlan la alineación del texto, con 0.0 a la izquierda, 0,5 al centro y 1.0 a la derecha."
|
||||
|
||||
# game/indepth_character.rpy:101
|
||||
translate spanish demo_character_7c75906c:
|
||||
|
||||
# e7 "The what_xalign property controls where all the text itself is placed within the textbox, while what_textalign controls where rows of text are placed relative to each other."
|
||||
e7 "La propiedad what_xalign controla dónde se coloca todo el texto dentro del cuadro de texto, mientras que what_textalign controla dónde se colocan las filas de texto relativas entre sí."
|
||||
|
||||
# game/indepth_character.rpy:103
|
||||
translate spanish demo_character_e2811c1c:
|
||||
|
||||
# e7 "Generally you'll want to to set them both what_xalign and what_textalign to the same value."
|
||||
e7 "Por lo general, querrás establecerlos what_xalign y what_textalign en el mismo valor."
|
||||
|
||||
# game/indepth_character.rpy:105
|
||||
translate spanish demo_character_baa52234:
|
||||
|
||||
# e7 "Setting what_layout to 'subtitle' puts Ren'Py in subtitle mode, which tries to even out the length of every line of text in a block."
|
||||
e7 "Al establecer what_layout en 'subtitle' pones a Ren'Py en el modo de subtítulos, que intenta igualar la longitud de cada línea de texto en un bloque."
|
||||
|
||||
# game/indepth_character.rpy:110
|
||||
translate spanish demo_character_41190f01:
|
||||
|
||||
# e8 "These properties can be combined to achieve many different effects."
|
||||
e8 "Estas propiedades se pueden combinar para lograr muchos efectos diferentes."
|
||||
|
||||
# game/indepth_character.rpy:124
|
||||
translate spanish demo_character_aa12d9ca:
|
||||
|
||||
# e8 "This example hides the background and shows dialogue centered and outlined, as if the game is being subtitled."
|
||||
e8 "Este ejemplo oculta el fondo y muestra el diálogo centrado y delineado, como si el juego estuviera subtitulado."
|
||||
|
||||
# game/indepth_character.rpy:133
|
||||
translate spanish demo_character_a7f243e5:
|
||||
|
||||
# e9 "There are two interesting non-style properties, what_prefix and what_suffix. These can put text at the start and end of a line of dialogue."
|
||||
e9 "Hay dos propiedades interesantes que no son de estilo, what_prefix y what_suffix. Estos pueden poner texto al principio y al final de una línea de diálogo."
|
||||
|
||||
# game/indepth_character.rpy:139
|
||||
translate spanish demo_character_f9b0052f:
|
||||
|
||||
# e "By using kind, you can copy properties from one character to another, changing only what you need to."
|
||||
e "Al usar kind, puede copiar las propiedades de un personaje a otro, cambiando solo lo que necesitas."
|
||||
|
||||
# game/indepth_character.rpy:148
|
||||
translate spanish demo_character_6dfce4b7:
|
||||
|
||||
# l8 "Like this! Finally I get some more dialogue around here."
|
||||
l8 "¡Me gusta esto! Finalmente consigo un poco más de diálogo por aquí."
|
||||
|
||||
# game/indepth_character.rpy:157
|
||||
translate spanish demo_character_68d9e46c:
|
||||
|
||||
# e "The last thing you have to know is that there's a special character, narrator, that speaks narration. Got it?"
|
||||
e "Lo último que debes saber es que hay un personaje especial, narrador, que habla narración. ¿Entendido?"
|
||||
|
||||
# game/indepth_character.rpy:159
|
||||
translate spanish demo_character_0c8f314a:
|
||||
|
||||
# "I think I do."
|
||||
"Eso creo."
|
||||
|
||||
# game/indepth_character.rpy:48
|
||||
translate spanish demo_character_31ace18e:
|
||||
|
||||
# e1 "The window_background property sets the image that's used for the background of the textbox, which should be the same size as the default in gui/textbox.png."
|
||||
e1 "La propiedad window_background establece la imagen que se utiliza para el fondo del cuadro de texto, que debe tener el mismo tamaño que el predeterminado en gui/textbox.png."
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
|
||||
# game/indepth_displayables.rpy:15
|
||||
translate spanish simple_displayables_db46fd25:
|
||||
|
||||
# e "Ren'Py has the concept of a displayable, which is something like an image that can be shown and hidden."
|
||||
e "Ren'Py tiene el concepto de visualizable, que es algo así como una imagen que se puede mostrar y ocultar."
|
||||
|
||||
# game/indepth_displayables.rpy:22
|
||||
translate spanish simple_displayables_bfe78cb7:
|
||||
|
||||
# e "The image statement is used to give an image name to a displayable. The easy way is to simply give an image filename."
|
||||
e "La sentencia image se utiliza para dar un nombre de imagen a un visualizable. La forma más sencilla es simplemente dar un nombre de archivo de imagen."
|
||||
|
||||
# game/indepth_displayables.rpy:29
|
||||
translate spanish simple_displayables_cef4598b:
|
||||
|
||||
# e "But that's not the only thing that an image can refer to. When the string doesn't have a dot in it, Ren'Py interprets that as a reference to a second image."
|
||||
e "Pero eso no es lo único a lo que una imagen puede referirse. Cuando la cadena no tiene un punto, Ren'Py lo interpreta como una referencia a una segunda imagen."
|
||||
|
||||
# game/indepth_displayables.rpy:41
|
||||
translate spanish simple_displayables_a661fb63:
|
||||
|
||||
# e "The string can also contain a color code, consisting of hexadecimal digits, just like the colors used by web browsers."
|
||||
e "La cadena también puede contener un código de color, que consta de dígitos hexadecimales, al igual que los colores utilizados por los navegadores web."
|
||||
|
||||
# game/indepth_displayables.rpy:43
|
||||
translate spanish simple_displayables_7f2efb23:
|
||||
|
||||
# e "Three or six digit colors are opaque, containing red, green, and blue values. The four and eight digit versions append alpha, allowing translucent colors."
|
||||
e "Los colores de tres o seis dígitos son opacos y contienen valores de rojo, verde y azul. Las versiones de cuatro y ocho dígitos añaden alfa, permitiendo colores translúcidos."
|
||||
|
||||
# game/indepth_displayables.rpy:53
|
||||
translate spanish simple_displayables_9cd108c6:
|
||||
|
||||
# e "The Transform displayable takes a displayable and can apply transform properties to it."
|
||||
e "Transform toma un visualizable y puede aplicarle propiedades de transformación."
|
||||
|
||||
# game/indepth_displayables.rpy:63
|
||||
translate spanish simple_displayables_c6e39078:
|
||||
|
||||
# e "There's a more complete form of Solid, that can take style properties. This lets us change the size of the Solid, where normally it fills the screen."
|
||||
e "Hay una forma más completa de Solid, que puede tomar propiedades de estilo. Esto nos permite cambiar el tamaño del sólido, que normalmente llena la pantalla."
|
||||
|
||||
# game/indepth_displayables.rpy:72
|
||||
translate spanish simple_displayables_b102a029:
|
||||
|
||||
# e "The Text displayable lets Ren'Py treat text as if it was an image."
|
||||
e "El visualizable Texto permite que Ren'Py trate el texto como si fuera una imagen."
|
||||
|
||||
# game/indepth_displayables.rpy:80
|
||||
translate spanish simple_displayables_0befbee0:
|
||||
|
||||
# e "This means that we can apply other displayables, like Transform, to Text in the same way we do to images."
|
||||
e "Esto significa que podemos aplicar otros visualizables, como Transform, al texto de la misma manera que lo hacemos con las imágenes."
|
||||
|
||||
# game/indepth_displayables.rpy:91
|
||||
translate spanish simple_displayables_fcf2325f:
|
||||
|
||||
# e "The Composite displayable lets us group multiple displayables together into a single one, from bottom to top."
|
||||
e "Composite nos permite agrupar múltiples visualizables en uno solo, de abajo hacia arriba."
|
||||
|
||||
# game/indepth_displayables.rpy:101
|
||||
translate spanish simple_displayables_3dc0050e:
|
||||
|
||||
# e "Some displayables are often used to customize the Ren'Py interface, with the Frame displayable being one of them. The frame displayable takes another displayable, and the size of the left, top, right, and bottom borders."
|
||||
e "Algunos visualizables se utilizan a menudo para personalizar la interfaz Ren'Py, con Frame que se puede mostrar como uno de ellos. El visualizable frame toma otro visualizable, y el tamaño de los bordes izquierdo, superior, derecho e inferior."
|
||||
|
||||
# game/indepth_displayables.rpy:111
|
||||
translate spanish simple_displayables_801b7910:
|
||||
|
||||
# e "The Frame displayable expands or shrinks to fit the area available to it. It does this by scaling the center in two dimensions and the sides in one, while keeping the corners the same size."
|
||||
e "Frame expande o encoge para adaptarse al área disponible. Lo hace escalando el centro en dos dimensiones y los lados en uno, mientras mantiene las esquinas del mismo tamaño."
|
||||
|
||||
# game/indepth_displayables.rpy:118
|
||||
translate spanish simple_displayables_00603985:
|
||||
|
||||
# e "A Frame can also tile sections of the displayable supplied to it, rather than scaling."
|
||||
e "Frame también puede cubir secciones de visualizbles, en lugar de escalar."
|
||||
|
||||
# game/indepth_displayables.rpy:126
|
||||
translate spanish simple_displayables_d8b23480:
|
||||
|
||||
# e "Frames might look a little weird in the abstract, but when used with a texture, you can see how we create scalable interface components."
|
||||
e "Los Frames pueden parecer un poco raros en lo abstracto, pero cuando se usan con una textura, se puede ver cómo creamos componentes de interfaz escalables."
|
||||
|
||||
# game/indepth_displayables.rpy:132
|
||||
translate spanish simple_displayables_ae3f35f5:
|
||||
|
||||
# e "These are just the simplest displayables, the ones you'll use directly the most often."
|
||||
e "Estos son solo los visualizables más simples, los que utilizarás directamente más a menudo."
|
||||
|
||||
# game/indepth_displayables.rpy:134
|
||||
translate spanish simple_displayables_de555a92:
|
||||
|
||||
# e "You can even write custom displayables for minigames, if you're proficient at Python. But for many visual novels, these will be all you'll need."
|
||||
e "Incluso puedes escribir visuzlizables personalizados para minijuegos, si eres competente en Python. Pero para muchas novelas visuales, esto será todo lo que necesitarás."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# indepth_displayables.rpy:67
|
||||
old "This is a text displayable."
|
||||
new "Este es un visualizable text."
|
||||
|
||||
# game/indepth_displayables.rpy:55
|
||||
translate spanish simple_displayables_f8e1ba3f:
|
||||
|
||||
# e "Notice how, since it takes a displayable, it can take another image. In fact, it can take any displayable defined here."
|
||||
e "Observe cómo, dado que toma una visualizable, puede tomar otra imagen. De hecho, puede tomar cualquier visualizable definible aquí."
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
# game/indepth_minigame.rpy:220
|
||||
translate spanish demo_minigame_8f14835c:
|
||||
|
||||
# e "You may want to mix Ren'Py with other forms of gameplay. There are a couple of ways to do this."
|
||||
e "Es posible que desee mezclar Ren'Py con otras formas de juego. Hay un par de maneras de hacer esto."
|
||||
|
||||
# game/indepth_minigame.rpy:222
|
||||
translate spanish demo_minigame_9b01503e:
|
||||
|
||||
# e "The first is with the screen system, which can be used to display data and create button and menu based interfaces."
|
||||
e "La primera es con el sistema de pantalla, que se puede utilizar para mostrar datos y crear interfaces basadas en botones y menús."
|
||||
|
||||
# game/indepth_minigame.rpy:224
|
||||
translate spanish demo_minigame_3e601161:
|
||||
|
||||
# e "Screens will work for many simulation-style games and RPGs."
|
||||
e "Screens funcionarán para muchos juegos de estilo simulación y juegos de rol."
|
||||
|
||||
# game/indepth_minigame.rpy:226
|
||||
translate spanish demo_minigame_a92baa6b:
|
||||
|
||||
# e "When screens are not enough you can write a creator-defined displayable to extend Ren'Py itself. A Creator-defined displayables can process raw events and draw to the screen."
|
||||
e "Cuando las pantallas no son suficientes, puede escribir un creator-defined displayable para extender Ren'Py. Un visualizable creator-defined puede procesar eventos en bruto y dibujar en la pantalla."
|
||||
|
||||
# game/indepth_minigame.rpy:228
|
||||
translate spanish demo_minigame_a07dbae0:
|
||||
|
||||
# e "That makes it possible to create all kinds of minigames. Would you like to play some pong?"
|
||||
e "Eso hace posible crear todo tipo de minijuegos. ¿Te gustaría jugar algún pong?"
|
||||
|
||||
# game/indepth_minigame.rpy:245
|
||||
translate spanish play_pong_ce00ff63:
|
||||
|
||||
# e "I win!"
|
||||
e "¡Gané!"
|
||||
|
||||
# game/indepth_minigame.rpy:249
|
||||
translate spanish play_pong_68c82e98:
|
||||
|
||||
# e "You won! Congratulations."
|
||||
e "¡Ganaste! Felicidades."
|
||||
|
||||
# game/indepth_minigame.rpy:255
|
||||
translate spanish pong_done_dde7e31a:
|
||||
|
||||
# e "Would you like to play again?" nointeract
|
||||
e "¿Te gustaría jugar de nuevo?" nointeract
|
||||
|
||||
# game/indepth_minigame.rpy:268
|
||||
translate spanish pong_done_a21abf38:
|
||||
|
||||
# e "Here's the source code for the minigame. It's very complex, and assumes you understand Python well."
|
||||
e "Aquí está el código fuente del minijuego. Es muy complejo y asume que entiendes bien Python."
|
||||
|
||||
# game/indepth_minigame.rpy:270
|
||||
translate spanish pong_done_750092ed:
|
||||
|
||||
# e "I won't go over it in detail here. You can read more about it in the {a=https://www.renpy.org/doc/html/udd.html}Creator-Defined Displayable documentation{/a}."
|
||||
e "No voy a repasar en detalle aquí. Puede leer más sobre esto en la {a=https://www.renpy.org/doc/html/udd.html}Documentación Creator-Defined Displayable{/a}."
|
||||
|
||||
# game/indepth_minigame.rpy:274
|
||||
translate spanish pong_done_5781d902:
|
||||
|
||||
# e "Minigames can spice up your visual novel, but be careful – not every visual novel player wants to be good at arcade games."
|
||||
e "Los minijuegos pueden animar tu novela visual, pero ten cuidado, no todos los jugadores de novelas visuales quieren ser buenos en los juegos de arcade."
|
||||
|
||||
# game/indepth_minigame.rpy:276
|
||||
translate spanish pong_done_631325c8:
|
||||
|
||||
# e "Part of the reason Ren'Py works well is that it's meant for certain types of games, like visual novels and life simulations."
|
||||
e "Parte de la razón por la que Ren'Py funciona bien es que está destinado a ciertos tipos de juegos, como las novelas visuales y simuladores."
|
||||
|
||||
# game/indepth_minigame.rpy:278
|
||||
translate spanish pong_done_61d60761:
|
||||
|
||||
# e "The further afield you get from those games, the more you'll find yourself fighting Ren'Py. At some point, it makes sense to consider other engines."
|
||||
e "Cuanto más te alejes de esos juegos, más te encontrarás luchando contra Ren'Py. En algún momento, tiene sentido considerar otros motores."
|
||||
|
||||
# game/indepth_minigame.rpy:282
|
||||
translate spanish pong_done_715c7b12:
|
||||
|
||||
# e "And that's fine with us. We'll always be here for you when you're making visual novels."
|
||||
e "Y eso está bien para nosotros. Siempre estaremos aquí para ti cuando hagas novelas visuales."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# indepth_minigame.rpy:198
|
||||
old "Player"
|
||||
new "Jugador"
|
||||
|
||||
# indepth_minigame.rpy:211
|
||||
old "Click to Begin"
|
||||
new "Click para iniciar"
|
||||
|
||||
# indepth_minigame.rpy:255
|
||||
old "Sure."
|
||||
new "Serguro"
|
||||
|
||||
# indepth_minigame.rpy:255
|
||||
old "No thanks."
|
||||
new "No, gracias"
|
||||
|
||||
@@ -0,0 +1,814 @@
|
||||
|
||||
# game/indepth_style.rpy:40
|
||||
translate spanish new_gui_17a0326e:
|
||||
|
||||
# e "When you create a new project, Ren'Py will automatically create a GUI - a Graphical User Interface - for it."
|
||||
e "Cuando creas un nuevo proyecto, Ren'Py creará automáticamente una GUI, una interfaz gráfica de usuario, para ello."
|
||||
|
||||
# game/indepth_style.rpy:42
|
||||
translate spanish new_gui_12c814ed:
|
||||
|
||||
# e "It defines the look of both in-game interface, like this text box, and out-of-game interface like the main and game menus."
|
||||
e "Define el aspecto de la interfaz tanto en el juego, como este cuadro de texto, y la interfaz fuera del juego, como el menú principal y el menú del juego."
|
||||
|
||||
# game/indepth_style.rpy:44
|
||||
translate spanish new_gui_0a2a73bb:
|
||||
|
||||
# e "The default GUI is meant to be nice enough for a simple project. With a few small changes, it's what you're seeing in this game."
|
||||
e "La interfaz gráfica de usuario predeterminada está diseñada para ser lo suficientemente agradable para un proyecto simple. Con algunos pequeños cambios, es lo que estás viendo en este juego."
|
||||
|
||||
# game/indepth_style.rpy:46
|
||||
translate spanish new_gui_22adf68e:
|
||||
|
||||
# e "The GUI is also meant to be easy for an intermediate creator to customize. Customizing the GUI consists of changing the image files in the gui directory, and changing variables in gui.rpy."
|
||||
e "La GUI también debe ser fácil de personalizar para un creador intermedio. La personalización de la GUI consiste en cambiar los archivos de imagen en el directorio gui y cambiar las variables en gui.rpy."
|
||||
|
||||
# game/indepth_style.rpy:48
|
||||
translate spanish new_gui_da21de30:
|
||||
|
||||
# e "At the same time, even when customized, the default GUI might be too recognizable for an extremely polished game. That's why we've made it easy to totally replace."
|
||||
e "Al mismo tiempo, incluso cuando se personaliza, la GUI predeterminada puede ser demasiado reconocible para un juego extremadamente pulido. Es por eso que hemos hecho que sea fácil de reemplazar totalmente."
|
||||
|
||||
# game/indepth_style.rpy:50
|
||||
translate spanish new_gui_45765574:
|
||||
|
||||
# e "We've put an extensive guide to customizing the GUI on the Ren'Py website. So if you want to learn more, visit the {a=https://www.renpy.org/doc/html/gui.html}GUI customization guide{/a}."
|
||||
e "Hemos incluido una extensa guía para personalizar la GUI en el sitio web de Ren'Py. Entonces, si desea obtener más información, visite la {a=https://www.renpy.org/doc/html/gui.html} Guía de personalización de la GUI{/a}."
|
||||
|
||||
# game/indepth_style.rpy:58
|
||||
translate spanish styles_fa345a38:
|
||||
|
||||
# e "Ren'Py has a powerful style system that controls what displayable look like."
|
||||
e "Ren'Py tiene un potente sistema de estilo que controla el aspecto del visualizable."
|
||||
|
||||
# game/indepth_style.rpy:60
|
||||
translate spanish styles_6189ee12:
|
||||
|
||||
# e "While the default GUI uses variables to provide styles with sensible defaults, if you're replacing the GUI or creating your own screens, you'll need to learn about styles yourself."
|
||||
e "Si bien la GUI predeterminada utiliza variables para proporcionar estilos con valores predeterminados razonables, si estás reemplazando la GUI o creando tus propias pantallas, deberás aprender sobre los estilos tú mismo."
|
||||
|
||||
# game/indepth_style.rpy:66
|
||||
translate spanish styles_menu_a4a6913e:
|
||||
|
||||
# e "What would you like to know about styles?" nointeract
|
||||
e "¿Qué te gustaría saber sobre los estilos?" nointeract
|
||||
|
||||
# game/indepth_style.rpy:98
|
||||
translate spanish style_basics_9a79ef89:
|
||||
|
||||
# e "Styles let a displayable look different from game to game, or even inside the same game."
|
||||
e "Los estilos permiten que los visualizables se vea diferente de un juego a otro, o incluso dentro del mismo juego."
|
||||
|
||||
# game/indepth_style.rpy:103
|
||||
translate spanish style_basics_48777f2c:
|
||||
|
||||
# e "Both of these buttons use the same displayables. But since different styles have been applied, the buttons look different from each other."
|
||||
e "Ambos botones utilizan los mismos visualizables. Pero como se han aplicado diferentes estilos, los botones se ven diferentes entre sí."
|
||||
|
||||
# game/indepth_style.rpy:108
|
||||
translate spanish style_basics_57704d8c:
|
||||
|
||||
# e "Styles are a combination of information from four different places."
|
||||
e "Los estilos son una combinación de información de cuatro lugares diferentes."
|
||||
|
||||
# game/indepth_style.rpy:121
|
||||
translate spanish style_basics_144731f6:
|
||||
|
||||
# e "The first place Ren'Py can get style information from is part of a screen. Each displayable created by a screen can take a style name and style properties."
|
||||
e "El primer lugar en el que Ren'Py puede obtener información de estilo es parte de una pantalla. Cada visualizable creado por una pantalla puede tomar un nombre de estilo y propiedades de estilo."
|
||||
|
||||
# game/indepth_style.rpy:138
|
||||
translate spanish style_basics_67e48162:
|
||||
|
||||
# e "When a screen displayable contains text, style properties prefixed with text_ apply to that text."
|
||||
e "Cuando un visualizable screen contiene texto, las propiedades de estilo con el prefijo text_ se aplican a ese texto."
|
||||
|
||||
# game/indepth_style.rpy:151
|
||||
translate spanish style_basics_03516b4a:
|
||||
|
||||
# e "The next is as part of a displayable created in an image statement. Style properties are just arguments to the displayable."
|
||||
e "El siguiente es como parte de un visualizable creado en una sentencia image. Las propiedades de estilo son solo argumentos para visualizables."
|
||||
|
||||
# game/indepth_style.rpy:160
|
||||
translate spanish style_basics_ccc0d1ca:
|
||||
|
||||
# egreen "Style properties can also be given as arguments when defining a character."
|
||||
egreen "Las propiedades de estilo también se pueden dar como argumentos al definir un carácter."
|
||||
|
||||
# game/indepth_style.rpy:162
|
||||
translate spanish style_basics_013ab314:
|
||||
|
||||
# egreen "Arguments beginning with who_ are style properties applied to the character's name, while those beginning with what_ are applied to the character's dialogue."
|
||||
egreen "Los argumentos que comienzan con who_ son propiedades de estilo que se aplican al nombre del personaje, mientras que los que comienzan con what_ se aplican al diálogo del personaje."
|
||||
|
||||
# game/indepth_style.rpy:164
|
||||
translate spanish style_basics_dbe80939:
|
||||
|
||||
# egreen "Style properties that don't have a prefix are also applied to the character's name."
|
||||
egreen "Las propiedades de estilo que no tienen un prefijo también se aplican al nombre del personaje."
|
||||
|
||||
# game/indepth_style.rpy:174
|
||||
translate spanish style_basics_ac6a8414:
|
||||
|
||||
# e "Finally, there is the the style statement, which creates or changes a named style. By giving Text the style argument, we tell it to use the blue_text style."
|
||||
e "Finalmente, está la sentencia style, que crea o cambia un estilo con nombre. Al darle a Text el argumento de estilo, le decimos que use el estilo blue_text."
|
||||
|
||||
# game/indepth_style.rpy:180
|
||||
translate spanish style_basics_3d9bdff7:
|
||||
|
||||
# e "A style property can inherit from a parent. If a style property is not given in a style, it comes from the parent of that style."
|
||||
e "Una propiedad de estilo puede heredar de un padre. Si una propiedad de estilo no se da en un estilo, proviene del padre de ese estilo."
|
||||
|
||||
# game/indepth_style.rpy:182
|
||||
translate spanish style_basics_49c5fbfe:
|
||||
|
||||
# e "By default the parent of the style has the same name, with the prefix up to the the first underscore removed. If the style does not have an underscore in its name, 'default' is used."
|
||||
e "Por defecto, el padre del estilo tiene el mismo nombre, con el prefijo hasta el primer guión bajo eliminado. Si el estilo no tiene un guión bajo en su nombre, se usa 'default'."
|
||||
|
||||
# game/indepth_style.rpy:184
|
||||
translate spanish style_basics_6ab170a3:
|
||||
|
||||
# e "For example, blue_text inherits from text, which in turn inherits from default. The default style defines all properties, so it doesn't inherit from anything."
|
||||
e "Por ejemplo, blue_text hereda del texto, que a su vez hereda del valor predeterminado. El estilo predeterminado define todas las propiedades, por lo que no se hereda de nada."
|
||||
|
||||
# game/indepth_style.rpy:190
|
||||
translate spanish style_basics_f78117a7:
|
||||
|
||||
# e "The parent can be explicitly changed by giving the style statement an 'is' clause. In this case, we're explictly setting the style to the parent of text."
|
||||
e "El padre se puede cambiar explícitamente al dar a la sentencia style una cláusula 'is'. En este caso, estamos configurando explícitamente el estilo al padre del texto."
|
||||
|
||||
# game/indepth_style.rpy:194
|
||||
translate spanish style_basics_6007040b:
|
||||
|
||||
# e "Each displayable has a default style name. By default, it's usually the lower-case displayable name, like 'text' for Text, or 'button' for buttons."
|
||||
e "Cada visualizable tiene un nombre de estilo predeterminado. Por defecto, generalmente es el nombre en minúsculas, como 'text' para texto, o 'button' para botones."
|
||||
|
||||
# game/indepth_style.rpy:196
|
||||
translate spanish style_basics_35db9a05:
|
||||
|
||||
# e "In a screen, a displayable can be given the style_prefix property to give a prefix for that displayable and it's children."
|
||||
e "En una pantalla, a un visualizable se le puede dar la propiedad style_prefix para dar un prefijo para ese visualizable y sus hijos."
|
||||
|
||||
# game/indepth_style.rpy:198
|
||||
translate spanish style_basics_422a87f7:
|
||||
|
||||
# e "For example, a text displayable with a style_prefix of 'help' will be given the style 'help_text'."
|
||||
e "Por ejemplo, un visualizable text con un prefijo de estilo de 'help' recibirá el estilo 'help_text'."
|
||||
|
||||
# game/indepth_style.rpy:200
|
||||
translate spanish style_basics_bad2e207:
|
||||
|
||||
# e "Lastly, when a displayable is a button, or inside a button, it can take style prefixes."
|
||||
e "Por último, cuando un visualizable es un botón, o dentro de un botón, puede tomar prefijos de estilo."
|
||||
|
||||
# game/indepth_style.rpy:202
|
||||
translate spanish style_basics_22ed20a1:
|
||||
|
||||
# e "The prefixes idle_, hover_, and insensitive_ are used when the button is unfocused, focused, and unfocusable."
|
||||
e "Los prefijos idle_, hover_ e insensitive_ se usan cuando el botón está desenfocado, enfocado y no enfocable."
|
||||
|
||||
# game/indepth_style.rpy:204
|
||||
translate spanish style_basics_7a58037e:
|
||||
|
||||
# e "These can be preceded by selected_ to change how the button looks when it represents a selected value or screen."
|
||||
e "Estos pueden ir precedidos por selected_ para cambiar la apariencia del botón cuando representa un valor o pantalla seleccionado."
|
||||
|
||||
# game/indepth_style.rpy:233
|
||||
translate spanish style_basics_0cdcb8c3:
|
||||
|
||||
# e "This screen shows the style prefixes in action. You can click on a button to select it, or click outside to advance."
|
||||
e "Esta pantalla muestra los prefijos de estilo en acción. Puede hacer clic en un botón para seleccionarlo o hacer clic fuera para avanzar."
|
||||
|
||||
# game/indepth_style.rpy:240
|
||||
translate spanish style_basics_aed05094:
|
||||
|
||||
# e "Those are the basics of styles. If GUI customization isn't enough for you, styles let you customize just about everything in Ren'Py."
|
||||
e "Esos son los fundamentos de los estilos. Si la personalización de la GUI no es suficiente para usted, los estilos le permiten personalizar casi todo en Ren'Py."
|
||||
|
||||
# game/indepth_style.rpy:253
|
||||
translate spanish style_general_81f3c8ff:
|
||||
|
||||
# e "The first group of style properties that we'll go over are the general style properties. These work with every displayable, or at least many different ones."
|
||||
e "El primer grupo de propiedades de estilo que analizaremos son las propiedades de estilo generales. Estos funcionan con todos los visualizables, o al menos muchos diferentes."
|
||||
|
||||
# game/indepth_style.rpy:264
|
||||
translate spanish style_general_a8d99699:
|
||||
|
||||
# e "Every displayable takes the position properties, which control where it can be placed on screen. Since I've already mentioned them, I won't repeat them here."
|
||||
e "Cada visualizable toma las propiedades de posición, que controlan dónde se puede colocar en la pantalla. Como ya los mencioné, no los repetiré aquí."
|
||||
|
||||
# game/indepth_style.rpy:275
|
||||
translate spanish style_general_58d4a18f:
|
||||
|
||||
# e "The xmaximum and ymaximum properties set the maximum width and height of the displayable, respectively. This will cause Ren'Py to shrink things, if possible."
|
||||
e "Las propiedades xmaximum y ymaximum establecen el ancho y la altura máximos de los visualizables, respectivamente. Esto hará que Ren'Py reduzca las cosas, si es posible."
|
||||
|
||||
# game/indepth_style.rpy:277
|
||||
translate spanish style_general_cae9a39f:
|
||||
|
||||
# e "Sometimes, the shrunken size will be smaller than the size given by xmaximum and ymaximum."
|
||||
e "A veces, el tamaño reducido será más pequeño que el tamaño dado por xmaximum y ymaximum."
|
||||
|
||||
# game/indepth_style.rpy:279
|
||||
translate spanish style_general_5928c24e:
|
||||
|
||||
# e "Similarly, the xminimum and yminimum properties set the minimum width and height. If the displayable is smaller, Ren'Py will try to make it bigger."
|
||||
e "Del mismo modo, las propiedades xminimum y yminimum establecen el ancho y la altura mínimos. Si el visualizable es más pequeño, Ren'Py intentará hacerlo más grande."
|
||||
|
||||
# game/indepth_style.rpy:289
|
||||
translate spanish style_general_35a8ee5e:
|
||||
|
||||
# e "The xsize and ysize properties set the minimum and maximum size to the same value, fixing the size."
|
||||
e "Las propiedades xsize y ysize establecen el tamaño mínimo y máximo en el mismo valor, fijando el tamaño."
|
||||
|
||||
# game/indepth_style.rpy:291
|
||||
translate spanish style_general_fcfb0640:
|
||||
|
||||
# e "These only works for displayables than can be resized. Some displayables, like images, can't be made bigger or smaller."
|
||||
e "Estos solo funcionan para visualizables que pueden ser redimensionados. Algunos visualizables, como las imágenes, no pueden hacerse más grandes o más pequeños."
|
||||
|
||||
# game/indepth_style.rpy:299
|
||||
translate spanish style_general_cd5cc97c:
|
||||
|
||||
# e "The area property takes a tuple - a parenthesis bounded list of four items. The first two give the position, and the second two the size."
|
||||
e "La propiedad del área toma una tupla: una lista delimitada por paréntesis de cuatro elementos. Los dos primeros dan la posición, y los dos segundos el tamaño."
|
||||
|
||||
# game/indepth_style.rpy:308
|
||||
translate spanish style_general_e5a58f0b:
|
||||
|
||||
# e "Finally, the alt property changes the text used by self-voicing for the hearing impaired."
|
||||
e "Finalmente, la propiedad alt cambia el texto utilizado por la voz-automática para las personas con discapacidad auditiva."
|
||||
|
||||
# game/indepth_style.rpy:335
|
||||
translate spanish style_text_fe457b8f:
|
||||
|
||||
# e "The text style properties apply to text and input displayables."
|
||||
e "Las propiedades de estilo de texto se aplican a visualizables text e input."
|
||||
|
||||
# game/indepth_style.rpy:337
|
||||
translate spanish style_text_7ab53f03:
|
||||
|
||||
# e "Text displayables can be created implicitly or explicitly. For example, a textbutton creates a text displayable with a style ending in button_text."
|
||||
e "Visualizables text pueden ser creados implícitamente o explícitamente. Por ejemplo, un botón de texto crea un visualizable text con un estilo que termina en button_text."
|
||||
|
||||
# game/indepth_style.rpy:339
|
||||
translate spanish style_text_6dd42a57:
|
||||
|
||||
# e "These can also be set in gui.rpy by changing or defining variables with names like gui.button_text_size."
|
||||
e "Estos también se pueden configurar en gui.rpy cambiando o definiendo variables con nombres como gui.button_text_size."
|
||||
|
||||
# game/indepth_style.rpy:347
|
||||
translate spanish style_text_c689130e:
|
||||
|
||||
# e "The bold style property makes the text bold. This can be done using an algorithm, rather than a different version of the font."
|
||||
e "La propiedad de estilo bold hace que el texto esté en negrita. Esto se puede hacer usando un algoritmo, en lugar de una versión diferente de la fuente."
|
||||
|
||||
# game/indepth_style.rpy:355
|
||||
translate spanish style_text_3420bfe4:
|
||||
|
||||
# e "The color property changes the color of the text. It takes hex color codes, just like everything else in Ren'Py."
|
||||
e "La propiedad color cambia el color del texto. Toma códigos de colores hexadecimales, como todo lo demás en Ren'Py."
|
||||
|
||||
# game/indepth_style.rpy:363
|
||||
translate spanish style_text_14bd6327:
|
||||
|
||||
# e "The first_indent style property determines how far the first line is indented."
|
||||
e "La propiedad de estilo first_indent determina hasta qué punto se sangra la primera línea."
|
||||
|
||||
# game/indepth_style.rpy:371
|
||||
translate spanish style_text_779ac517:
|
||||
|
||||
# e "The font style property changes the font the text uses. Ren'Py takes TrueType and OpenType fonts, and you'll have to include the font file as part of your visual novel."
|
||||
e "La propiedad de estilo font cambia la fuente que usa el texto. Ren'Py toma las fuentes TrueType y OpenType, y tendrás que incluir el archivo de fuente como parte de tu novela visual."
|
||||
|
||||
# game/indepth_style.rpy:379
|
||||
translate spanish style_text_917e2bca:
|
||||
|
||||
# e "The size property changes the size of the text."
|
||||
e "La propiedad size cambia el tamaño del texto."
|
||||
|
||||
# game/indepth_style.rpy:388
|
||||
translate spanish style_text_1a46cd43:
|
||||
|
||||
# e "The italic property makes the text italic. Again, this is better done with a font, but for short amounts of text Ren'Py can do it for you."
|
||||
e "La propiedad italic hace que el texto esté en cursiva. Nuevamente, esto se hace mejor con una fuente, pero para cantidades cortas de texto, Ren'Py puede hacerlo por ti."
|
||||
|
||||
# game/indepth_style.rpy:397
|
||||
translate spanish style_text_472f382d:
|
||||
|
||||
# e "The justify property makes the text justified, lining all but the last line up on the left and the right side."
|
||||
e "La propiedad justify hace que el texto esté justificado, alineando todo menos la última línea del lado izquierdo y derecho."
|
||||
|
||||
# game/indepth_style.rpy:405
|
||||
translate spanish style_text_87b075f8:
|
||||
|
||||
# e "The kerning property kerns the text. When it's negative, characters are closer together. When positive, characters are farther apart."
|
||||
e "La propiedad kerning da espacio el texto. Cuando es negativo, los caracteres están más juntos. Cuando es positivo, los caracteres están más separados."
|
||||
|
||||
# game/indepth_style.rpy:415
|
||||
translate spanish style_text_fe7dec14:
|
||||
|
||||
# e "The line_leading and line_spacing properties put spacing before each line, and between lines, respectively."
|
||||
e "Las propiedades line_leading y line_spacing ponen el espaciado antes de cada línea, y entre líneas, respectivamente."
|
||||
|
||||
# game/indepth_style.rpy:424
|
||||
translate spanish style_text_aee9277a:
|
||||
|
||||
# e "The outlines property puts outlines around text. This takes a list of tuples, which is a bit complicated."
|
||||
e "La propiedad outlines pone contornos alrededor del texto. Esto requiere una lista de tuplas, lo cual es un poco complicado."
|
||||
|
||||
# game/indepth_style.rpy:426
|
||||
translate spanish style_text_b4c5190f:
|
||||
|
||||
# e "But if you ignore the brackets and parenthesis, you have the width of the outline, the color, and then horizontal and vertical offsets."
|
||||
e "Pero si ignoras los corchetes y los paréntesis, tienes el ancho del contorno, el color y, a continuación, los offsets horizontales y verticales."
|
||||
|
||||
# game/indepth_style.rpy:434
|
||||
translate spanish style_text_5a0c2c02:
|
||||
|
||||
# e "The rest_indent property controls the indentation of lines after the first one."
|
||||
e "La propiedad rest_indent controla la sangría de las líneas después de la primera."
|
||||
|
||||
# game/indepth_style.rpy:443
|
||||
translate spanish style_text_430c1959:
|
||||
|
||||
# e "The text_align property controls the positioning of multiple lines of text inside the text displayable. For example, 0.5 means centered."
|
||||
e "La propiedad text_align controla el posicionamiento de múltiples líneas de texto dentro del visualizable text. Por ejemplo, 0.5 significa centrado."
|
||||
|
||||
# game/indepth_style.rpy:445
|
||||
translate spanish style_text_19aa0833:
|
||||
|
||||
# e "It doesn't change the position of the text displayable itself. For that, you'll often want to set the text_align and xalign to the same value."
|
||||
e "No cambia la posición del visualizable text. Para eso, a menudo querrá establecer el text_align y el xalign en el mismo valor."
|
||||
|
||||
# game/indepth_style.rpy:455
|
||||
translate spanish style_text_efc3c392:
|
||||
|
||||
# e "When both text_align and xalign are set to 1.0, the text is properly right-justified."
|
||||
e "Cuando tanto text_align como xalign se configuran en 1.0, el texto está correctamente justificado."
|
||||
|
||||
# game/indepth_style.rpy:464
|
||||
translate spanish style_text_43be63b9:
|
||||
|
||||
# e "The underline property underlines the text."
|
||||
e "La propiedad underline subraya el texto."
|
||||
|
||||
# game/indepth_style.rpy:471
|
||||
translate spanish style_text_343f6d34:
|
||||
|
||||
# e "Those are the most common text style properties, but not the only ones. Here are a few more that you might need in special circumstances."
|
||||
e "Esas son las propiedades de estilo de texto más comunes, pero no las únicas. Aquí hay algunos más que puede necesitar en circunstancias especiales."
|
||||
|
||||
# game/indepth_style.rpy:479
|
||||
translate spanish style_text_e7204a95:
|
||||
|
||||
# e "By default, text in Ren'Py is antialiased, to smooth the edges. The antialias property can turn that off, and make the text a little more jagged."
|
||||
e "Por defecto, el texto en Ren'Py tiene antialias, para suavizar los bordes. La propiedad antialias puede desactivar eso y hacer que el texto sea un poco más irregular."
|
||||
|
||||
# game/indepth_style.rpy:487
|
||||
translate spanish style_text_b4563984:
|
||||
|
||||
# e "The adjust_spacing property is a very subtle one, that only matters when a player resizes the window. When true, characters will be shifted a bit so the Text has the same relative spacing."
|
||||
e "La propiedad adjust_spacing es muy sutil, eso solo importa cuando un jugador cambia el tamaño de la ventana. Cuando es True, los caracteres se desplazarán un poco para que el texto tenga el mismo espaciado relativo."
|
||||
|
||||
# game/indepth_style.rpy:496
|
||||
translate spanish style_text_605d4e4a:
|
||||
|
||||
# e "When False, the text won't jump around as much. But it can be a little wider or narrower based on screen size."
|
||||
e "Cuando es False, el texto no saltará tanto. Pero puede ser un poco más ancho o más estrecho según el tamaño de la pantalla."
|
||||
|
||||
# game/indepth_style.rpy:505
|
||||
translate spanish style_text_acf8a0e1:
|
||||
|
||||
# e "The layout property has a few special values that control where lines are broken. The 'nobreak' value disables line breaks entirely, making the text wider."
|
||||
e "La propiedad layout tiene algunos valores especiales que controlan dónde se rompen las líneas. El valor 'nobreak' deshabilita los saltos de línea por completo, haciendo que el texto sea más ancho."
|
||||
|
||||
# game/indepth_style.rpy:516
|
||||
translate spanish style_text_785729cf:
|
||||
|
||||
# e "When the layout property is set to 'subtitle', the line breaking algorithm is changed to try to make all lines even in length, as subtitles usually are."
|
||||
e "Cuando la propiedad layout se establece en 'subtitle', el algoritmo de salto de línea se cambia para intentar que todas las líneas tengan una longitud igual a la de los subtítulos."
|
||||
|
||||
# game/indepth_style.rpy:524
|
||||
translate spanish style_text_9c26f218:
|
||||
|
||||
# e "The strikethrough property draws a line through the text. It seems pretty unlikely you'd want to use this one."
|
||||
e "La propiedad strikethrough traza una línea a través del texto. Parece bastante improbable que quieras usar este."
|
||||
|
||||
# game/indepth_style.rpy:534
|
||||
translate spanish style_text_c7229243:
|
||||
|
||||
# e "The vertical style property places text in a vertical layout. It's meant for Asian languages with special fonts."
|
||||
e "La propiedad de estilo vertical coloca el texto en un diseño vertical. Está destinado a los idiomas asiáticos con fuentes especiales."
|
||||
|
||||
# game/indepth_style.rpy:540
|
||||
translate spanish style_text_724bd5e0:
|
||||
|
||||
# e "And those are the text style properties. There might be a lot of them, but we want to give you a lot of control over how you present text to your players."
|
||||
e "Y esas son las propiedades de estilo de texto. Puede que haya muchos, pero queremos darte mucho control sobre cómo presentar el texto a tus jugadores."
|
||||
|
||||
# game/indepth_style.rpy:580
|
||||
translate spanish style_button_300b6af5:
|
||||
|
||||
# e "Next up, we have the window and button style properties. These apply to windows like the text window at the bottom of this screen and frames like the ones we show examples in."
|
||||
e "A continuación, tenemos las propiedades de estilo window y button. Estos se aplican a ventanas como la ventana de texto en la parte inferior de esta pantalla y marcos como los que mostramos en los ejemplos."
|
||||
|
||||
# game/indepth_style.rpy:582
|
||||
translate spanish style_button_255a18e4:
|
||||
|
||||
# e "These properties also apply to buttons, in-game and out-of-game. To Ren'Py, a button is a window you can click."
|
||||
e "Estas propiedades también se aplican a los botones, dentro del juego y fuera del juego. Para Ren'Py, un botón es una ventana en la que puede hacer clic."
|
||||
|
||||
# game/indepth_style.rpy:593
|
||||
translate spanish style_button_9b53ce93:
|
||||
|
||||
# e "I'll start off with this style, which everything will inherit from. To make our lives easier, it inherits from the default style, rather than the customizes buttons in this game's GUI."
|
||||
e "Comenzaré con este estilo, del cual todo heredará. Para hacer nuestra vida más fácil, hereda del estilo default, en lugar de los botones personalizados en la GUI de este juego."
|
||||
|
||||
# game/indepth_style.rpy:595
|
||||
translate spanish style_button_aece4a8c:
|
||||
|
||||
# e "The first style property is the background property. It adds a background to the a button or window. Since this is a button, idle and hover variants choose different backgrounds when focused."
|
||||
e "La primera propiedad de estilo es la propiedad background. Agrega un fondo al botón o ventana. Como se trata de un botón, las variantes idle y hover eligen diferentes fondos cuando se enfocan."
|
||||
|
||||
# game/indepth_style.rpy:597
|
||||
translate spanish style_button_b969f04a:
|
||||
|
||||
# e "We also center the two buttons, using the xalign position property."
|
||||
e "También centramos los dos botones, usando la propiedad de posición xalign."
|
||||
|
||||
# game/indepth_style.rpy:601
|
||||
translate spanish style_button_269ae069:
|
||||
|
||||
# e "We've also customized the style of the button's text, using this style. It centers the text and makes it change color when hovered."
|
||||
e "También hemos personalizado el estilo del texto del botón, utilizando este estilo. Centra el texto y lo hace cambiar de color cuando se enfoca."
|
||||
|
||||
# game/indepth_style.rpy:612
|
||||
translate spanish style_button_1009f3e1:
|
||||
|
||||
# e "Without any padding around the text, the button looks odd. Ren'Py has padding properties that add space inside the button's background."
|
||||
e "Sin ningún relleno alrededor del texto, el botón se ve extraño. Ren'Py tiene propiedades de relleno que agregan espacio dentro del fondo del botón."
|
||||
|
||||
# game/indepth_style.rpy:621
|
||||
translate spanish style_button_5bdfa45a:
|
||||
|
||||
# e "More commonly used are the xpadding and ypadding style properties, which add the same padding to the left and right, or the top and bottom, respectively."
|
||||
e "Más comúnmente utilizadas son las propiedades de estilo xpadding y ypadding, que agregan el mismo relleno a la izquierda y la derecha, o la parte superior e inferior, respectivamente."
|
||||
|
||||
# game/indepth_style.rpy:629
|
||||
translate spanish style_button_81283d42:
|
||||
|
||||
# e "The margin style properties work the same way, except they add space outside the background. The full set exists: left_margin, right_margin, top_margin, bottom_margin, xmargin, and ymargin."
|
||||
e "Las propiedades de estilo margin funcionan de la misma manera, excepto que agregan espacio fuera del fondo. El conjunto completo existe: left_margin, right_margin, top_margin, bottom_margin, xmargin y ymargin."
|
||||
|
||||
# game/indepth_style.rpy:638
|
||||
translate spanish style_button_0b7aca6b:
|
||||
|
||||
# e "The size_group style property takes a string. Ren'Py will make sure that all the windows or buttons with the same size_group string are the same size."
|
||||
e "La propiedad de estilo size_group toma una cadena. Ren'Py se asegurará de que todas las ventanas o botones con la misma cadena size_group sean del mismo tamaño."
|
||||
|
||||
# game/indepth_style.rpy:647
|
||||
translate spanish style_button_4c6da7d9:
|
||||
|
||||
# e "Alternatively, the xfill and yfill style properties make a button take up all available space in the horizontal or vertical directions."
|
||||
e "Alternativamente, las propiedades de estilo xfill y yfill hacen que un botón ocupe todo el espacio disponible en las direcciones horizontal o vertical."
|
||||
|
||||
# game/indepth_style.rpy:657
|
||||
translate spanish style_button_fd5338b2:
|
||||
|
||||
# e "The foreground property gives a displayable that is placed on top of the contents and background of the window or button."
|
||||
e "La propiedad foreground proporciona un visualizable que se coloca sobre el contenido y el fondo de la ventana o el botón."
|
||||
|
||||
# game/indepth_style.rpy:659
|
||||
translate spanish style_button_b8af697c:
|
||||
|
||||
# e "One way to use it is to provide extra decorations to a button that's serving as a checkbox. Another would be to use it with a Frame to provide a glossy shine that overlays the button's contents."
|
||||
e "Una forma de usarlo es proporcionar decoraciones adicionales a un botón que sirve como casilla de verificación. Otra sería usarlo con un Frame para proporcionar un brillo que cubra el contenido del botón."
|
||||
|
||||
# game/indepth_style.rpy:668
|
||||
translate spanish style_button_c0b1b62e:
|
||||
|
||||
# e "There are also a few style properties that only apply to buttons. The hover_sound and activate_sound properties play sound files when a button is focused and activated, respectively."
|
||||
e "También hay algunas propiedades de estilo que solo se aplican a los botones. Las propiedades hover_sound y enable_sound reproducen archivos de sonido cuando un botón está enfocado y activado, respectivamente."
|
||||
|
||||
# game/indepth_style.rpy:677
|
||||
translate spanish style_button_02fa647e:
|
||||
|
||||
# e "Finally, the focus_mask property applies to partially transparent buttons. When it's set to True, only areas of the button that aren't transparent cause a button to focus."
|
||||
e "Finalmente, la propiedad focus_mask se aplica a los botones parcialmente transparentes. Cuando se establece en True, solo las áreas del botón que no son transparentes hacen que el botón se enfoque."
|
||||
|
||||
# game/indepth_style.rpy:679
|
||||
translate spanish style_button_fb973235:
|
||||
|
||||
# e "Be careful with focus_mask, as it only works on desktop platforms. It doesn't yet work on Android or iOS."
|
||||
e "Ten cuidado con focus_mask, ya que solo funciona en plataformas de escritorio. Todavía no funciona en Android o iOS."
|
||||
|
||||
# game/indepth_style.rpy:759
|
||||
translate spanish style_bar_414d454a:
|
||||
|
||||
# e "To demonstrate styles, let me first show two of the images we'll be using. This is the image we're using for parts of the bar that are empty."
|
||||
e "Para demostrar estilos, primero déjame mostrar dos de las imágenes que usaremos. Esta es la imagen que estamos usando para partes de la barra que están vacías."
|
||||
|
||||
# game/indepth_style.rpy:763
|
||||
translate spanish style_bar_9422b7b0:
|
||||
|
||||
# e "And here's what we use for parts of the bar that are full."
|
||||
e "Y esto es lo que usamos para partes de la barra que están llenas."
|
||||
|
||||
# game/indepth_style.rpy:775
|
||||
translate spanish style_bar_8ae6a14b:
|
||||
|
||||
# e "The left_bar and right_bar style properties, and their hover variants, give displayables for the left and right side of the bar. By default, the value is shown on the left."
|
||||
e "Las propiedades de estilo left_bar y right_bar, y sus variantes de desplazamiento, permiten mostrar los lados izquierdo y derecho de la barra. Por defecto, el valor se muestra a la izquierda."
|
||||
|
||||
# game/indepth_style.rpy:777
|
||||
translate spanish style_bar_7f0f50e5:
|
||||
|
||||
# e "Also by default, both the left and right displayables are rendered at the full width of the bar, and then cropped to the appropriate size."
|
||||
e "Además, de forma predeterminada, tanto la visualización derecha como la izquierda se representan en todo el ancho de la barra y luego se recortan al tamaño adecuado."
|
||||
|
||||
# game/indepth_style.rpy:779
|
||||
translate spanish style_bar_9ef4f62f:
|
||||
|
||||
# e "We give the bar the ysize property to set how tall it is. We could also give it xsize to choose how wide, but here it's limited by the width of the frame it's in."
|
||||
e "Le damos a la barra la propiedad ysize para establecer qué tan alta es. También podríamos darle xsize para elegir qué ancho, pero aquí está limitado por el ancho del marco en el que se encuentra."
|
||||
|
||||
# game/indepth_style.rpy:792
|
||||
translate spanish style_bar_80d8ceed:
|
||||
|
||||
# e "When the bar_invert style property is true, the bar value is displayed on the right side of the bar. The left_bar and right_bar displayables might also need to be swapped."
|
||||
e "Cuando la propiedad de estilo bar_invert es True, el valor de la barra se muestra en el lado derecho de la barra. Es posible que también deban intercambiarse los indicadores de barra izquierda y barra derecha."
|
||||
|
||||
# game/indepth_style.rpy:806
|
||||
translate spanish style_bar_cca67222:
|
||||
|
||||
# e "The bar_resizing style property causes the bar images to be resized to represent the value, rather than being rendered at full size and cropped."
|
||||
e "La propiedad de estilo bar_resizing hace que las imágenes de la barra se redimensionen para representar el valor, en lugar de representarse a tamaño completo y recortarse."
|
||||
|
||||
# game/indepth_style.rpy:819
|
||||
translate spanish style_bar_7d361bac:
|
||||
|
||||
# e "The thumb style property gives a thumb image, that's placed based on the bars value. In the case of a scrollbar, it's resized if possible."
|
||||
e "La propiedad de estilo thumb proporciona una imagen thumb, que se coloca según el valor de las barras. En el caso de una barra de desplazamiento, se redimensiona si es posible."
|
||||
|
||||
# game/indepth_style.rpy:821
|
||||
translate spanish style_bar_b6dfb61b:
|
||||
|
||||
# e "Here, we use it with the base_bar style property, which sets both bar images to the same displayable."
|
||||
e "Aquí, lo usamos con la propiedad de estilo base_bar, que establece ambas imágenes de barra en la misma pantalla."
|
||||
|
||||
# game/indepth_style.rpy:836
|
||||
translate spanish style_bar_996466ad:
|
||||
|
||||
# e "The left_gutter and right_gutter properties set a gutter on the left or right size of the bar. The gutter is space the bar can't be dragged into, that can be used for borders."
|
||||
e "Las propiedades left_gutter y right_gutter establecen un canal en el tamaño izquierdo o derecho de la barra. El canal es el espacio al que no se puede arrastrar la barra, que se puede usar para los bordes."
|
||||
|
||||
# game/indepth_style.rpy:851
|
||||
translate spanish style_bar_fa41a83c:
|
||||
|
||||
# e "The bar_vertical style property displays a vertically oriented bar. All of the other properties change names - left_bar becomes top_bar, while right_bar becomes bottom_bar."
|
||||
e "La propiedad de estilo bar_vertical muestra una barra orientada verticalmente. Todas las demás propiedades cambian de nombre - left_bar se convierte en top_bar, mientras que la right_bar se convierte en bottom_bar."
|
||||
|
||||
# game/indepth_style.rpy:856
|
||||
translate spanish style_bar_5d33c5dc:
|
||||
|
||||
# e "Finally, there's one style we can't show here, and it's unscrollable. It controls what happens when a scrollbar can't be moved at all."
|
||||
e "Finalmente, hay un estilo que no podemos mostrar aquí y es incontrolable. Controla lo que sucede cuando una barra de desplazamiento no se puede mover en absoluto."
|
||||
|
||||
# game/indepth_style.rpy:858
|
||||
translate spanish style_bar_e8e32280:
|
||||
|
||||
# e "By default, it's shown. But if unscrollable is 'insensitive', the bar becomes insensitive. If it's 'hide', the bar is hidden, but still takes up space."
|
||||
e "Por defecto, se muestra. Pero si no es desplazable es 'insensitive', la barra se vuelve insensible. Si es 'hide', la barra está oculta, pero aún ocupa espacio."
|
||||
|
||||
# game/indepth_style.rpy:862
|
||||
translate spanish style_bar_f1292000:
|
||||
|
||||
# e "That's it for the bar properties. By using them, a creator can customize bars, scrollbars, and sliders."
|
||||
e "Eso es todo por las propiedades de barra. Al usarlos, un creador puede personalizar barras, barras de desplazamiento y controles deslizantes."
|
||||
|
||||
# game/indepth_style.rpy:961
|
||||
translate spanish style_box_5fd535f4:
|
||||
|
||||
# e "The hbox displayable is used to lay its children out horizontally. By default, there's no spacing between children, so they run together."
|
||||
e "El visualizable hbox se usa para colocar a sus hijos horizontalmente. De forma predeterminada, no hay espacio entre los hijos, por lo que se ejecutan juntos."
|
||||
|
||||
# game/indepth_style.rpy:967
|
||||
translate spanish style_box_0111e5dc:
|
||||
|
||||
# e "Similarly, the vbox displayable is used to lay its children out vertically. Both support style properties that control placement."
|
||||
e "Del mismo modo, el visualizable vbox se utiliza para colocar sus hijos verticalmente. Ambos soportan propiedades de estilo que controlan la colocación."
|
||||
|
||||
# game/indepth_style.rpy:972
|
||||
translate spanish style_box_5a44717b:
|
||||
|
||||
# e "To make the size of the box displayable obvious, I'll add a highlight to the box itself, and not the frame containing it."
|
||||
e "Para que el tamaño de la caja sea visible, agregaré highlight a la caja, y no al marco que la contiene."
|
||||
|
||||
# game/indepth_style.rpy:980
|
||||
translate spanish style_box_239e7a8f:
|
||||
|
||||
# e "Boxes support the xfill and yfill style properties. These properties make a box expand to fill the available space, rather than the space of the largest child."
|
||||
e "Las cajas admiten las propiedades de estilo xfill y yfill. Estas propiedades hacen que una caja se expanda para llenar el espacio disponible, en lugar del espacio del hijo mayor."
|
||||
|
||||
# game/indepth_style.rpy:990
|
||||
translate spanish style_box_e513c946:
|
||||
|
||||
# e "The spacing style property takes a value in pixels, and adds that much spacing between each child of the box."
|
||||
e "La propiedad de estilo spacing toma un valor en píxeles y agrega mucho espacio entre cada elemento secundario del cuadro."
|
||||
|
||||
# game/indepth_style.rpy:1000
|
||||
translate spanish style_box_6ae4f94d:
|
||||
|
||||
# e "The first_spacing style property is similar, but it only adds space between the first and second children. This is useful when the first child is a title that needs different spacing."
|
||||
e "La propiedad de estilo first_spacing es similar, pero solo agrega espacio entre el primer y el segundo hijo. Esto es útil cuando el primer hijo es un título que necesita espacios diferentes."
|
||||
|
||||
# game/indepth_style.rpy:1010
|
||||
translate spanish style_box_0c518d9f:
|
||||
|
||||
# e "The box_reverse style property reverses the order of entries in the box."
|
||||
e "La propiedad de estilo box_reverse invierte el orden de las entradas en el cuadro."
|
||||
|
||||
# game/indepth_style.rpy:1023
|
||||
translate spanish style_box_f73c1422:
|
||||
|
||||
# e "We'll switch back to a horizontal box for our next example."
|
||||
e "Volveremos a un cuadro horizontal para nuestro siguiente ejemplo."
|
||||
|
||||
# game/indepth_style.rpy:1033
|
||||
translate spanish style_box_285592bb:
|
||||
|
||||
# e "The box_wrap style property fills the box with children until it's full, then starts again on the next line."
|
||||
e "La propiedad de estilo box_wrap llena la caja con hijos hasta que esté llena, y luego comienza de nuevo en la siguiente línea."
|
||||
|
||||
# game/indepth_style.rpy:1046
|
||||
translate spanish style_box_a7637552:
|
||||
|
||||
# e "Grids bring with them two more style properties. The xspacing and yspacing properties control spacing in the horizontal and vertical directions, respectively."
|
||||
e "Las grids traen consigo dos propiedades de estilo más. Las propiedades xspacing y yspacing controlan el espaciado en las direcciones horizontal y vertical, respectivamente."
|
||||
|
||||
# game/indepth_style.rpy:1053
|
||||
translate spanish style_box_4006f74b:
|
||||
|
||||
# e "Lastly, we have the fixed layout. The fixed layout usually expands to fill all space, and shows its children from back to front."
|
||||
e "Por último, tenemos el fixed layout. Los fixed layout generalmente se expanden para llenar todo el espacio, y muestran a sus hijos de atrás hacia adelante."
|
||||
|
||||
# game/indepth_style.rpy:1055
|
||||
translate spanish style_box_4a2866f0:
|
||||
|
||||
# e "But of course, we have some style properties that can change that."
|
||||
e "Pero, por supuesto, tenemos algunas propiedades de estilo que pueden cambiar eso."
|
||||
|
||||
# game/indepth_style.rpy:1064
|
||||
translate spanish style_box_a3b47b6e:
|
||||
|
||||
# e "When the xfit style property is true, the fixed lays out all its children as if it was full size, and then shrinks in width to fit them. The yfit style works the same way, but in height."
|
||||
e "Cuando la propiedad de estilo xfit es True, los fixed presenta a todos sus hijos como si fuera de tamaño completo, y luego se reduce en ancho para adaptarse a ellos. El estilo yfit funciona de la misma manera, pero en altura."
|
||||
|
||||
# game/indepth_style.rpy:1072
|
||||
translate spanish style_box_6a593b10:
|
||||
|
||||
# e "The order_reverse style property changes the order in which the children are shown. Instead of back-to-front, they're displayed front-to-back."
|
||||
e "La propiedad de estilo order_reverse cambia el orden en que se muestran los hijos. En lugar de último a primero, se muestran de primero a último."
|
||||
|
||||
# game/indepth_style.rpy:1084
|
||||
translate spanish style_inspector_21bc0709:
|
||||
|
||||
# e "Sometimes it's hard to figure out what style is being used for a particular displayable. The displayable inspector can help with that."
|
||||
e "A veces es difícil averiguar qué estilo se está utilizando para un determinado visualizable. El inspector de visualizables puede ayudar con eso."
|
||||
|
||||
# game/indepth_style.rpy:1086
|
||||
translate spanish style_inspector_243c50f0:
|
||||
|
||||
# e "To use it, place the mouse over a portion of the Ren'Py user interface, and hit shift+I. That's I for inspector."
|
||||
e "Para usarlo, coloca el mouse sobre una parte de la interfaz de usuario de Ren'Py y presiona shift+I. Eso soy yo por inspector."
|
||||
|
||||
# game/indepth_style.rpy:1088
|
||||
translate spanish style_inspector_bcbdc396:
|
||||
|
||||
# e "Ren'Py will pop up a list of displayables the mouse is over. Next to each is the name of the style that displayable uses."
|
||||
e "Ren'Py mostrará una lista visualizables que el mouse está apuntando. Junto a cada uno está el nombre del estilo que utiliza la visualización."
|
||||
|
||||
# game/indepth_style.rpy:1090
|
||||
translate spanish style_inspector_d981e5c8:
|
||||
|
||||
# e "You can click on the name of the style to see where it gets its properties from."
|
||||
e "Puede hacer clic en el nombre del estilo para ver de dónde obtiene sus propiedades."
|
||||
|
||||
# game/indepth_style.rpy:1092
|
||||
translate spanish style_inspector_ef46b86d:
|
||||
|
||||
# e "By default, the inspector only shows interface elements like screens, and not images. Type shift+alt+I if you'd like to see images as well."
|
||||
e "De forma predeterminada, el inspector solo muestra elementos de la interfaz como pantallas y no imágenes. Teclea shift+alt+I si quieres ver imágenes también."
|
||||
|
||||
# game/indepth_style.rpy:1094
|
||||
translate spanish style_inspector_b59c6b69:
|
||||
|
||||
# e "You can try the inspector right now, by hovering this text and hitting shift+I."
|
||||
e "Puede probar al inspector ahora mismo, al enfocar este texto y presionar shift+I."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# indepth_style.rpy:20
|
||||
old "Button 1"
|
||||
new "Botón 1"
|
||||
|
||||
# indepth_style.rpy:22
|
||||
old "Button 2"
|
||||
new "Botón 2"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "Style basics."
|
||||
new "Estilos básicos"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "General style properties."
|
||||
new "Propiedades de estilo generales"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "Text style properties."
|
||||
new "Propiedes de estilo Text"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "Window and Button style properties."
|
||||
new "Propiedes de estilo Window y Button"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "Bar style properties."
|
||||
new "Propiedes de estilo Bar"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "Box, Grid, and Fixed style properties."
|
||||
new "Propiedes de estilo Box, Grid y Fixed"
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "The Displayable Inspector."
|
||||
new "El inspector visualizables."
|
||||
|
||||
# indepth_style.rpy:66
|
||||
old "That's all I want to know."
|
||||
new "Eso es todo lo que quiero saber."
|
||||
|
||||
# indepth_style.rpy:112
|
||||
old "This text is colored green."
|
||||
new "Este texto es de color verde."
|
||||
|
||||
# indepth_style.rpy:126
|
||||
old "Danger"
|
||||
new "Peligro"
|
||||
|
||||
# indepth_style.rpy:142
|
||||
old "This text is colored red."
|
||||
new "Este texto es de color rojo."
|
||||
|
||||
# indepth_style.rpy:170
|
||||
old "This text is colored blue."
|
||||
new "Este texto es de color azul."
|
||||
|
||||
# indepth_style.rpy:248
|
||||
old "Orbiting Earth in the spaceship, I saw how beautiful our planet is.\n–Yuri Gagarin"
|
||||
new "Orbitando la Tierra en la nave espacial, vi lo hermoso que es nuestro planeta. \n–Yuri Gagarin"
|
||||
|
||||
# indepth_style.rpy:303
|
||||
old "\"Orbiting Earth in the spaceship, I saw how beautiful our planet is.\" Said by Yuri Gagarin."
|
||||
new "\"Orbitando la Tierra en la nave espacial, vi lo hermoso que es nuestro planeta.\" Frace de Yuri Gagarin"
|
||||
|
||||
# indepth_style.rpy:326
|
||||
old "Vertical"
|
||||
new "Vertical"
|
||||
|
||||
# indepth_style.rpy:329
|
||||
old "Far better it is to dare mighty things, to win glorious triumphs, even though checkered by failure, than to rank with those poor spirits who neither enjoy nor suffer much, because they live in the gray twilight that knows not victory nor defeat.\n\n–Theodore Roosevelt"
|
||||
new "Mucho mejor es atreverse a hacer cosas poderosas, ganar gloriosos triunfos, aunque estén frustrados por el fracaso, que clasificarse con aquellos espíritus pobres que ni disfrutan ni sufren mucho, porque viven en el crepúsculo gris que no sabe de victoria ni de derrota. \n\n–Theodore Roosevelt"
|
||||
|
||||
# indepth_style.rpy:561
|
||||
old "Top Choice"
|
||||
new "Elección Superior"
|
||||
|
||||
# indepth_style.rpy:566
|
||||
old "Bottom Choice"
|
||||
new "Elección Inferior"
|
||||
|
||||
# indepth_style.rpy:879
|
||||
old "First Child"
|
||||
new "Primer Hijo"
|
||||
|
||||
# indepth_style.rpy:880
|
||||
old "Second Child"
|
||||
new "Segundo Hijo"
|
||||
|
||||
# indepth_style.rpy:881
|
||||
old "Third Child"
|
||||
new "Tercer Hijo"
|
||||
|
||||
# indepth_style.rpy:884
|
||||
old "Fourth Child"
|
||||
new "Cuato Hijo"
|
||||
|
||||
# indepth_style.rpy:885
|
||||
old "Fifth Child"
|
||||
new "Quinto Hijo"
|
||||
|
||||
# indepth_style.rpy:886
|
||||
old "Sixth Child"
|
||||
new "Sexto Hijo"
|
||||
@@ -0,0 +1,179 @@
|
||||
|
||||
# game/indepth_text.rpy:22
|
||||
translate spanish a_label_8d79d234:
|
||||
|
||||
# e "You just clicked to jump to a label."
|
||||
e "Acabas de hacer clic para saltar a una etiqueta."
|
||||
|
||||
# game/indepth_text.rpy:28
|
||||
translate spanish text_578c4060:
|
||||
|
||||
# e "Sometimes, when showing text, we'll want to change the way some of the text is displayed."
|
||||
e "A veces, cuando se muestra texto, queremos cambiar la forma en que se muestra parte del texto."
|
||||
|
||||
# game/indepth_text.rpy:31
|
||||
translate spanish text_60750345:
|
||||
|
||||
# e "For example, we might want to have text that is {b}bold{/b}, {i}italic{/i}, {s}struckthrough{/s}, or {u}underlined{/u}."
|
||||
e "Por ejemplo, podríamos querer que el texto esté {b}en negrita{/b}, {i}en cursiva{/i}, {s}tachado{/s}, o {u}subrayado{/u}."
|
||||
|
||||
# game/indepth_text.rpy:33
|
||||
translate spanish text_5e1a6ee8:
|
||||
|
||||
# e "That's what text tags are for."
|
||||
e "Para eso son las etiquetas de texto."
|
||||
|
||||
# game/indepth_text.rpy:37
|
||||
translate spanish text_38c63ec8:
|
||||
|
||||
# e "Text tags are contained in braces, like the {{b} tag above. When a text tag takes a closing tag, the closing tag begins with a slash, like {{/b} does."
|
||||
e "Las etiquetas de texto están entre llaves, como la etiqueta {{b} de arriba. Cuando una etiqueta de texto toma una etiqueta de cierre, la etiqueta de cierre comienza con una barra inclinada, como {{/b} esta."
|
||||
|
||||
# game/indepth_text.rpy:39
|
||||
translate spanish text_1760f9c8:
|
||||
|
||||
# e "We've already seen the b, i, s, and u tags, but there are lot more than those. I'll show you the rest of them."
|
||||
e "Ya hemos visto las etiquetas b, i, s y u, pero hay mucho más que esas. Te mostraré el resto de ellas."
|
||||
|
||||
# game/indepth_text.rpy:43
|
||||
translate spanish text_a620251f:
|
||||
|
||||
# e "The a text tag can {a=https://www.renpy.org}link to a website{/a} or {a=jump:a_label}jump to a label{/a}."
|
||||
e "La etiqueta de texto a puede {a=https://www.renpy.org}enlazar a un sitio web{/a} o {a=jump:a_label}saltar a una etiqueta{/a}."
|
||||
|
||||
# game/indepth_text.rpy:49
|
||||
translate spanish after_a_label_d22d5f4a:
|
||||
|
||||
# e "The alpha text tag makes text {alpha=.5}translucent{/alpha}."
|
||||
e "La etiqueta de texto alpha hace que el texto {alpha=.5}sea translúcido{/alpha}."
|
||||
|
||||
# game/indepth_text.rpy:53
|
||||
translate spanish after_a_label_7c2c3cd2:
|
||||
|
||||
# e "The color text tag changes the {color=#0080c0}color{/color} of the text."
|
||||
e "La etiqueta de texto color cambia el {color=#0080c0}color{/color} del texto."
|
||||
|
||||
# game/indepth_text.rpy:57
|
||||
translate spanish after_a_label_3f81fe7b:
|
||||
|
||||
# e "The cps text tag {cps=25}makes text type itself out slowly{/cps}, even if slow text is off."
|
||||
e "La etiqueta de texto cps {cps=25}hace que el texto se escriba lentamente{/cps}, incluso si el texto lento está desactivado."
|
||||
|
||||
# game/indepth_text.rpy:59
|
||||
translate spanish after_a_label_b102941f:
|
||||
|
||||
# e "The cps tag can also be relative to the default speed, {cps=*2}doubling{/cps} or {cps=*0.5}halving{/cps} it."
|
||||
e "La etiqueta cps también puede ser relativa a la velocidad predeterminada, {cps=*2}duplicando{/cps} o {cps=*0.5}reduciendo a la mitad{/cps}."
|
||||
|
||||
# game/indepth_text.rpy:64
|
||||
translate spanish after_a_label_22c4339a:
|
||||
|
||||
# e "The font tag changes the font, for example to {font=DejaVuSans-Bold.ttf}DejaVuSans-Bold.ttf{/font}."
|
||||
e "La etiqueta de fuente cambia la fuente, por ejemplo a {font=DejaVuSans-Bold.ttf}DejaVuSans-Bold.ttf{/font}."
|
||||
|
||||
# game/indepth_text.rpy:66
|
||||
translate spanish after_a_label_d43417d7:
|
||||
|
||||
# e "Sometimes, changing to a bold font looks better than using the {{b} tag."
|
||||
e "A veces, cambiar a una fuente en negrita se ve mejor que usar la etiqueta {{b}."
|
||||
|
||||
# game/indepth_text.rpy:71
|
||||
translate spanish after_a_label_f24052f9:
|
||||
|
||||
# e "The k tag changes kerning. It can space the letters of a word {k=-.5}closer together{/k} or {k=.5}farther apart{/k}."
|
||||
e "La etiqueta k cambia el espaciado. Puede espaciar las letras de una palabra {k=-.5}más juntas{/k} o {k=.5}más separadas{/k}."
|
||||
|
||||
# game/indepth_text.rpy:76
|
||||
translate spanish after_a_label_2310b922:
|
||||
|
||||
# e "The size tag changes the size of text. It can make text {size=+10}bigger{/size} or {size=-10}smaller{/size}, or set it to a {size=30}fixed size{/size}."
|
||||
e "La etiqueta size cambia el tamaño del texto. Puede hacer que el texto {size=+10}sea más grande{/size} o {size=-10}más pequeño{/size}, o establecerlo en {size=30}un tamaño fijo{/size}."
|
||||
|
||||
# game/indepth_text.rpy:81
|
||||
translate spanish after_a_label_f566abf2:
|
||||
|
||||
# e "The space tag {space=30} adds horizontal space in text.{vspace=30}The vspace tag adds vertical space between lines."
|
||||
e "La etiqueta space {space=30} agrega espacio horizontal en el texto.{vspace=30}La etiqueta de vspace agrega espacio vertical entre líneas."
|
||||
|
||||
# game/indepth_text.rpy:85
|
||||
translate spanish after_a_label_054b9ffa:
|
||||
|
||||
# e "There are a few text tags that only makes sense in dialogue."
|
||||
e "Hay algunas etiquetas de texto que solo tienen sentido en diálogos."
|
||||
|
||||
# game/indepth_text.rpy:89
|
||||
translate spanish after_a_label_86efc45b:
|
||||
|
||||
# e "The p tag breaks a paragraph,{p}and waits for the player to click."
|
||||
e "La etiqueta p rompe un párrafo,{p}y espera a que el jugador haga clic."
|
||||
|
||||
# game/indepth_text.rpy:91
|
||||
translate spanish after_a_label_3ece2387:
|
||||
|
||||
# e "If it is given a number as an argument,{p=1.5}it waits that many seconds."
|
||||
e "Si se le asigna un número como argumento,{p=1.5}espera esa cantidad de segundos."
|
||||
|
||||
# game/indepth_text.rpy:95
|
||||
translate spanish after_a_label_3881f72d:
|
||||
|
||||
# e "The w tag also waits for a click,{w} except it doesn't break lines,{w=.5} the way p does."
|
||||
e "La etiqueta w también espera un clic,{w} excepto que no rompe líneas,{w=.5} de la manera que lo hace p."
|
||||
|
||||
# game/indepth_text.rpy:100
|
||||
translate spanish after_a_label_e5321e79:
|
||||
|
||||
# eslow "The nw tag causes Ren'Py to continue past slow text,{nw}"
|
||||
eslow "La etiqueta nw hace que Ren'Py continúe más allá del texto lento,{nw}"
|
||||
|
||||
# game/indepth_text.rpy:102
|
||||
translate spanish after_a_label_1f2697ba:
|
||||
|
||||
# extend " to the next statement."
|
||||
extend " a la siguiente sentencia."
|
||||
|
||||
# game/indepth_text.rpy:106
|
||||
translate spanish after_a_label_dbfca166:
|
||||
|
||||
# e "To break a line without pausing,\none can write \\n. \\' and \\\" include quotes in the text."
|
||||
e "Para romper una línea sin pausa,\nuno puede escribir \\n. \\' y \\\" incluyen comillas en el texto."
|
||||
|
||||
# game/indepth_text.rpy:111
|
||||
translate spanish after_a_label_ffdf7e76:
|
||||
|
||||
# e "The interpolation feature takes a variable name in square brackets, and inserts it into text."
|
||||
e "La característica de interpolación toma un nombre de variable entre corchetes y lo inserta en el texto."
|
||||
|
||||
# game/indepth_text.rpy:117
|
||||
translate spanish after_a_label_fc99fcbf:
|
||||
|
||||
# e "For example, this displays the [variable!t]."
|
||||
e "Por ejemplo, esto muestra el [variable!t]."
|
||||
|
||||
# game/indepth_text.rpy:121
|
||||
translate spanish after_a_label_c84d9087:
|
||||
|
||||
# e "When the variable name is followed by !q, special characters are quoted. This displays the raw [variable!q!t], including the italics tags."
|
||||
e "Cuando el nombre de la variable va seguido de !q, se citan los caracteres especiales. Esto muestra la variable [variable!q!t], incluidas las etiquetas en cursiva."
|
||||
|
||||
# game/indepth_text.rpy:126
|
||||
translate spanish after_a_label_c90f24a8:
|
||||
|
||||
# e "When the variable name is followed by !t, it is translated to [variable!t]. It could be something else in a different language."
|
||||
e "Cuando el nombre de la variable va seguido de !t, se traduce a [variable!t]. Podría ser otra cosa en un idioma diferente."
|
||||
|
||||
# game/indepth_text.rpy:129
|
||||
translate spanish after_a_label_fb106a95:
|
||||
|
||||
# e "Finally, certain characters are special. [[, {{, and \\ need to be doubled if included in text. The %% character should be doubled if used in dialogue."
|
||||
e "Finalmente, ciertos caracteres son especiales. [[, {{, y \\ deben duplicarse si se incluyen en el texto. El carácter %% debe doblarse si se usa en el diálogo."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# indepth_text.rpy:115
|
||||
old "{i}variable value{/i}"
|
||||
new "{i}valor de variable{/i}"
|
||||
|
||||
# indepth_text.rpy:124
|
||||
old "translatable text"
|
||||
new "texto traducible"
|
||||
|
||||
@@ -0,0 +1,523 @@
|
||||
|
||||
# game/indepth_transitions.rpy:56
|
||||
translate spanish demo_transitions_5bbc72fe:
|
||||
|
||||
# e "Ren'Py ships with a large number of built-in transitions, and also includes classes that let you define your own."
|
||||
e "Ren'Py se envía con un gran número de transiciones integradas, y también incluye clases que le permiten definir las tuyas propias."
|
||||
|
||||
# game/indepth_transitions.rpy:58
|
||||
translate spanish demo_transitions_menu_3caf78d3:
|
||||
|
||||
# e "What kind of transitions would you like demonstrated?" nointeract
|
||||
e "¿Qué tipo de transiciones te gustaría demostrar?" nointeract
|
||||
|
||||
# game/indepth_transitions.rpy:95
|
||||
translate spanish demo_simple_transitions_2b4fbae3:
|
||||
|
||||
# e "Okay, I can tell you about simple transitions. We call them simple because they don't take much in the way of configuration."
|
||||
e "Vale, te puedo contar sobre transiciones simples. Las llamamos simples porque no toman mucho en la configuración."
|
||||
|
||||
# game/indepth_transitions.rpy:97
|
||||
translate spanish demo_simple_transitions_4b235ac2:
|
||||
|
||||
# e "But don't let that get you down, since they're the transitions you'll probably use the most in a game."
|
||||
e "Pero no dejes que eso te desanime, ya que son las transiciones que probablemente usarás más en un juego."
|
||||
|
||||
# game/indepth_transitions.rpy:103
|
||||
translate spanish demo_simple_transitions_af0431ac:
|
||||
|
||||
# e "The 'dissolve' transition is probably the most useful, blending one scene into another."
|
||||
e "La transición 'dissolve' es probablemente la más útil, combinando una escena con otra."
|
||||
|
||||
# game/indepth_transitions.rpy:109
|
||||
translate spanish demo_simple_transitions_5b9f711f:
|
||||
|
||||
# e "The 'Dissolve' function lets you create your own dissolves, taking a different amount of time."
|
||||
e "La función 'Dissolve' te permite crear tus propios dissolves, tendran tiempos diferente."
|
||||
|
||||
# game/indepth_transitions.rpy:116
|
||||
translate spanish demo_simple_transitions_79816523:
|
||||
|
||||
# e "The 'fade' transition fades to black, and then fades back in to the new scene."
|
||||
e "La transición de 'fade' desvanece a negro, y luego se desvanece en la nueva escena."
|
||||
|
||||
# game/indepth_transitions.rpy:118
|
||||
translate spanish demo_simple_transitions_141bb95d:
|
||||
|
||||
# e "If you're going to stay at a black screen, you'll probably want to use 'dissolve' rather than 'fade'."
|
||||
e "Si va a permanecer en una pantalla negra, es probable que desees utilizar 'dissolve' en lugar de 'fade'."
|
||||
|
||||
# game/indepth_transitions.rpy:123
|
||||
translate spanish demo_simple_transitions_f059f4ae:
|
||||
|
||||
# e "You can use 'Fade' to define your own fades. By changing the timing and the color faded to, you can use this for special effects, like flashbulbs."
|
||||
e "Puedes usar 'Fade' para definir tus propios fades. Al cambiar la sincronización y el color difuminado, puede usar esto para efectos especiales, como flashes."
|
||||
|
||||
# game/indepth_transitions.rpy:129
|
||||
translate spanish demo_simple_transitions_e948905b:
|
||||
|
||||
# e "The 'pixellate' transition pixellates out the old scene, switches to the new scene, and then unpixellates that."
|
||||
e "La transición 'pixellate' pixela la escena antigua, cambia a la nueva escena, y luego la muestra sin píxeles."
|
||||
|
||||
# game/indepth_transitions.rpy:131
|
||||
translate spanish demo_simple_transitions_6a1ae05f:
|
||||
|
||||
# e "It's probably not appropriate for most games, but we think it's kind of neat."
|
||||
e "Probablemente no sea apropiado para la mayoría de los juegos, pero creemos que es un poco prolijo."
|
||||
|
||||
# game/indepth_transitions.rpy:134
|
||||
translate spanish demo_simple_transitions_bdfcd85a:
|
||||
|
||||
# e "You can use 'Pixellate' to change the details of the pixellation."
|
||||
e "Puedes usar 'Pixellate' para cambiar los detalles de la pixelación."
|
||||
|
||||
# game/indepth_transitions.rpy:136
|
||||
translate spanish demo_simple_transitions_432f7224:
|
||||
|
||||
# e "Motions can also be used as transitions."
|
||||
e "Motions también se puede utilizar como transiciones."
|
||||
|
||||
# game/indepth_transitions.rpy:138
|
||||
translate spanish demo_simple_transitions_a20cefa7:
|
||||
|
||||
# "..."
|
||||
"..."
|
||||
|
||||
# game/indepth_transitions.rpy:140
|
||||
translate spanish demo_simple_transitions_0fd4d656:
|
||||
|
||||
# "......"
|
||||
"......"
|
||||
|
||||
# game/indepth_transitions.rpy:146
|
||||
translate spanish demo_simple_transitions_fbf11906:
|
||||
|
||||
# e "Hey! Pay attention."
|
||||
e "¡Oye! Pon atención."
|
||||
|
||||
# game/indepth_transitions.rpy:148
|
||||
translate spanish demo_simple_transitions_51c1c5b8:
|
||||
|
||||
# e "I was about to demonstrate 'vpunch'... well, I guess I just did."
|
||||
e "Estaba a punto de demostrar 'vpunch' ... bueno, supongo que acabo de hacerlo."
|
||||
|
||||
# game/indepth_transitions.rpy:154
|
||||
translate spanish demo_simple_transitions_57f19473:
|
||||
|
||||
# e "We can also shake the screen horizontally, with 'hpunch'. These were defined using the 'Move' function."
|
||||
e "También podemos sacudir la pantalla horizontalmente, con 'hpunch'. Estos se definieron utilizando la función 'Move'."
|
||||
|
||||
# game/indepth_transitions.rpy:156
|
||||
translate spanish demo_simple_transitions_fce83e12:
|
||||
|
||||
# e "There's also the 'move' transition, which is confusingly enough defined using the 'MoveTransition' function."
|
||||
e "También está la transición 'move', que se define confusamente usando la función 'MoveTransition'."
|
||||
|
||||
# game/indepth_transitions.rpy:164
|
||||
translate spanish demo_simple_transitions_1050b6a4:
|
||||
|
||||
# e "The 'move' transition finds images that have changed placement, and slides them to their new place. It's an easy way to get motion in your game."
|
||||
e "La transición 'move' encuentra imágenes que han cambiado de ubicación y las desliza a su nuevo lugar. Es una forma fácil de obtener movimiento en tu juego."
|
||||
|
||||
# game/indepth_transitions.rpy:168
|
||||
translate spanish demo_simple_transitions_dc776e59:
|
||||
|
||||
# e "That's it for the simple transitions."
|
||||
e "Eso es todo por las transiciones simples ."
|
||||
|
||||
# game/indepth_transitions.rpy:175
|
||||
translate spanish demo_imagedissolve_transitions_2db67018:
|
||||
|
||||
# e "Perhaps the most flexible kind of transition is the ImageDissolve, which lets you use an image to control a dissolve."
|
||||
e "Quizás el tipo de transición más flexible sea el ImageDissolve, que te permite usar una imagen para controlar una disolución."
|
||||
|
||||
# game/indepth_transitions.rpy:177
|
||||
translate spanish demo_imagedissolve_transitions_429f8d03:
|
||||
|
||||
# e "This lets us specify very complex transitions, fairly simply. Let's try some, and then I'll show you how they work."
|
||||
e "Esto nos permite especificar transiciones muy complejas, de manera bastante simple. Probemos un poco y luego te mostraré cómo funcionan."
|
||||
|
||||
# game/indepth_transitions.rpy:179
|
||||
translate spanish demo_imagedissolve_transitions_1ce501b0:
|
||||
|
||||
# e "There are two ImageDissolve transitions built into Ren'Py."
|
||||
e "Hay dos transiciones ImageDissolve integradas en Ren'Py."
|
||||
|
||||
# game/indepth_transitions.rpy:191
|
||||
translate spanish demo_imagedissolve_transitions_ea0413be:
|
||||
|
||||
# e "The 'blinds' transition opens and closes what looks like vertical blinds."
|
||||
e "La transición 'blinds' abre y cierra para parecer persianas verticales."
|
||||
|
||||
# game/indepth_transitions.rpy:201
|
||||
translate spanish demo_imagedissolve_transitions_12e2e0d0:
|
||||
|
||||
# e "The 'squares' transition uses these squares to show things."
|
||||
e "La transición 'squares' usa estos cuadrados para mostrar cosas."
|
||||
|
||||
# game/indepth_transitions.rpy:203
|
||||
translate spanish demo_imagedissolve_transitions_bbf73d1c:
|
||||
|
||||
# e "I'm not sure why anyone would want to use it, but it was used in some translated games, so we added it."
|
||||
e "No estoy segura de por qué alguien querría usarlo, pero se usó en algunos juegos traducidos, así que lo agregamos."
|
||||
|
||||
# game/indepth_transitions.rpy:207
|
||||
translate spanish demo_imagedissolve_transitions_0ab2902d:
|
||||
|
||||
# e "The most interesting transitions aren't in the standard library."
|
||||
e "Las transiciones más interesantes no están en la biblioteca estándar."
|
||||
|
||||
# game/indepth_transitions.rpy:209
|
||||
translate spanish demo_imagedissolve_transitions_54aa9bf9:
|
||||
|
||||
# e "These ones require an image the size of the screen, and so we couldn't include them as the size of the screen can change from game to game."
|
||||
e "Estos requieren una imagen del tamaño de la pantalla, por lo que no podemos incluirlos, ya que el tamaño de la pantalla puede cambiar de un juego a otro."
|
||||
|
||||
# game/indepth_transitions.rpy:215
|
||||
translate spanish demo_imagedissolve_transitions_ca316184:
|
||||
|
||||
# e "We can hide things with a 'circleirisin'..."
|
||||
e "Podemos ocultar cosas con un 'circleirisin' ..."
|
||||
|
||||
# game/indepth_transitions.rpy:221
|
||||
translate spanish demo_imagedissolve_transitions_b8fdf2b6:
|
||||
|
||||
# e "... and show them again with a 'circleirisout'."
|
||||
e "... y mostrarlas de nuevo con un 'circleirisout'."
|
||||
|
||||
# game/indepth_transitions.rpy:227
|
||||
translate spanish demo_imagedissolve_transitions_ee427486:
|
||||
|
||||
# e "The 'circlewipe' transitions changes screens using a circular wipe effect."
|
||||
e "Las transiciones 'circlewipe' cambian las pantallas utilizando un efecto de barrido circular."
|
||||
|
||||
# game/indepth_transitions.rpy:233
|
||||
translate spanish demo_imagedissolve_transitions_6f089276:
|
||||
|
||||
# e "The 'dream' transition does this weird wavy dissolve, and does it relatively slowly."
|
||||
e "La transición 'dream' hace que esta ondulación extraña se disuelva, y lo hace con relativa lentitud."
|
||||
|
||||
# game/indepth_transitions.rpy:239
|
||||
translate spanish demo_imagedissolve_transitions_c0b9d74d:
|
||||
|
||||
# e "The 'teleport' transition reveals the new scene one line at a time."
|
||||
e "La transición 'teleport' revela la nueva escena una línea a la vez."
|
||||
|
||||
# game/indepth_transitions.rpy:246
|
||||
translate spanish demo_imagedissolve_transitions_72ba11d4:
|
||||
|
||||
# e "This is the background picture used with the circleirisout transition."
|
||||
e "Esta es la imagen de fondo utilizada con la transición circleirisout."
|
||||
|
||||
# game/indepth_transitions.rpy:248
|
||||
translate spanish demo_imagedissolve_transitions_fc3b3339:
|
||||
|
||||
# e "When we use an ImageDissolve, the white will dissolve in first, followed by progressively darker colors. Let's try it."
|
||||
e "Cuando usamos un ImageDissolve, el blanco se disolverá primero, seguido de colores cada vez más oscuros. Vamos a intentarlo."
|
||||
|
||||
# game/indepth_transitions.rpy:255
|
||||
translate spanish demo_imagedissolve_transitions_4327dca2:
|
||||
|
||||
# e "If we give ImageDissolve the 'reverse' parameter, black areas will dissolve in first."
|
||||
e "Si le damos a ImageDissolve el parámetro 'reversa', las áreas negras se disolverán primero."
|
||||
|
||||
# game/indepth_transitions.rpy:260
|
||||
translate spanish demo_imagedissolve_transitions_3a401ee7:
|
||||
|
||||
# e "This lets circleirisin and circleirisout use the same image."
|
||||
e "Esto permite a circleirisin y circleirisout utilizar la misma imagen."
|
||||
|
||||
# game/indepth_transitions.rpy:267
|
||||
translate spanish demo_imagedissolve_transitions_20d9cf6c:
|
||||
|
||||
# e "The teleport transition uses a different image, one that dissolves things in one line at a time."
|
||||
e "La transición teleport utiliza una imagen diferente, una que disuelve las cosas en una línea a la vez."
|
||||
|
||||
# game/indepth_transitions.rpy:272
|
||||
translate spanish demo_imagedissolve_transitions_906f7800:
|
||||
|
||||
# e "A dissolve only seems to affect parts of the scene that have changed..."
|
||||
e "Una disolución solo parece afectar partes de la escena que han cambiado ..."
|
||||
|
||||
# game/indepth_transitions.rpy:277
|
||||
translate spanish demo_imagedissolve_transitions_4b557a29:
|
||||
|
||||
# e "... which is how we apply the teleport effect to a single character."
|
||||
e "... que es cómo aplicamos el efecto de teletransporte a un solo personaje."
|
||||
|
||||
# game/indepth_transitions.rpy:285
|
||||
translate spanish demo_cropmove_transitions_1711a91e:
|
||||
|
||||
# e "The CropMove transition class provides a wide range of transition effects. It's not used very much in practice, though."
|
||||
e "La clase de transición CropMove proporciona una amplia gama de efectos de transición. Sin embargo, no se usa mucho en la práctica."
|
||||
|
||||
# game/indepth_transitions.rpy:290
|
||||
translate spanish demo_cropmove_transitions_6d82cfd7:
|
||||
|
||||
# e "I'll stand offscreen, so you can see some of its modes. I'll read out the mode name after each transition."
|
||||
e "Me quedaré fuera de la pantalla para que puedas ver algunos de sus modos. Leeré el nombre del modo después de cada transición."
|
||||
|
||||
# game/indepth_transitions.rpy:296
|
||||
translate spanish demo_cropmove_transitions_4427c78c:
|
||||
|
||||
# e "We first have wiperight..."
|
||||
e "Primero tenemos wiperight ..."
|
||||
|
||||
# game/indepth_transitions.rpy:302
|
||||
translate spanish demo_cropmove_transitions_6d1810a1:
|
||||
|
||||
# e "...followed by wipeleft... "
|
||||
e "... seguido de wipeleft... "
|
||||
|
||||
# game/indepth_transitions.rpy:308
|
||||
translate spanish demo_cropmove_transitions_1dd1c6a1:
|
||||
|
||||
# e "...wipeup..."
|
||||
e "...wipeup..."
|
||||
|
||||
# game/indepth_transitions.rpy:314
|
||||
translate spanish demo_cropmove_transitions_0ea0fa83:
|
||||
|
||||
# e "...and wipedown."
|
||||
e "..y wipedown."
|
||||
|
||||
# game/indepth_transitions.rpy:316
|
||||
translate spanish demo_cropmove_transitions_c7cb4c16:
|
||||
|
||||
# e "Next, the slides."
|
||||
e "A continuación, las slides."
|
||||
|
||||
# game/indepth_transitions.rpy:322
|
||||
translate spanish demo_cropmove_transitions_462a442f:
|
||||
|
||||
# e "Slideright..."
|
||||
e "Slideright..."
|
||||
|
||||
# game/indepth_transitions.rpy:328
|
||||
translate spanish demo_cropmove_transitions_f9a2e523:
|
||||
|
||||
# e "...slideleft..."
|
||||
e "...slideleft..."
|
||||
|
||||
# game/indepth_transitions.rpy:334
|
||||
translate spanish demo_cropmove_transitions_20ce3e9c:
|
||||
|
||||
# e "...slideup..."
|
||||
e "...slideup..."
|
||||
|
||||
# game/indepth_transitions.rpy:340
|
||||
translate spanish demo_cropmove_transitions_9e00a7a6:
|
||||
|
||||
# e "and slidedown."
|
||||
e "y slidedown."
|
||||
|
||||
# game/indepth_transitions.rpy:342
|
||||
translate spanish demo_cropmove_transitions_b8a710c1:
|
||||
|
||||
# e "While the slide transitions slide in the new scene, the slideaways slide out the old scene."
|
||||
e "Mientras que las transiciones de slide se deslizan en la nueva escena, las slideaways se deslizan fuera de la escena anterior."
|
||||
|
||||
# game/indepth_transitions.rpy:349
|
||||
translate spanish demo_cropmove_transitions_1efb4cd0:
|
||||
|
||||
# e "Slideawayright..."
|
||||
e "Slideawayright..."
|
||||
|
||||
# game/indepth_transitions.rpy:355
|
||||
translate spanish demo_cropmove_transitions_bfb5dfd7:
|
||||
|
||||
# e "...slideawayleft..."
|
||||
e "...slideawayleft..."
|
||||
|
||||
# game/indepth_transitions.rpy:361
|
||||
translate spanish demo_cropmove_transitions_6c1a4a6f:
|
||||
|
||||
# e "...slideawayup..."
|
||||
e "...slideawayup..."
|
||||
|
||||
# game/indepth_transitions.rpy:367
|
||||
translate spanish demo_cropmove_transitions_1f994a7b:
|
||||
|
||||
# e "and slideawaydown."
|
||||
e "y slideawaydown."
|
||||
|
||||
# game/indepth_transitions.rpy:369
|
||||
translate spanish demo_cropmove_transitions_025ef723:
|
||||
|
||||
# e "We also have a couple of transitions that use a rectangular iris."
|
||||
e "También tenemos un par de transiciones que utilizan un iris rectangular."
|
||||
|
||||
# game/indepth_transitions.rpy:376
|
||||
translate spanish demo_cropmove_transitions_d00d505e:
|
||||
|
||||
# e "There's irisout..."
|
||||
e "Está irisout..."
|
||||
|
||||
# game/indepth_transitions.rpy:383
|
||||
translate spanish demo_cropmove_transitions_016a1e0a:
|
||||
|
||||
# e "... and irisin."
|
||||
e "... y irisin."
|
||||
|
||||
# game/indepth_transitions.rpy:387
|
||||
translate spanish demo_cropmove_transitions_08d753ed:
|
||||
|
||||
# e "It's enough to make you feel a bit dizzy."
|
||||
e "Es suficiente para que te sientas un poco mareado."
|
||||
|
||||
# game/indepth_transitions.rpy:393
|
||||
translate spanish demo_pushmove_transitions_003e506d:
|
||||
|
||||
# e "The PushMove transitions use the new scene to push the old one out. Let's take a look."
|
||||
e "Las transiciones de PushMove utilizan la nueva escena para expulsar la anterior. Vamos a ver."
|
||||
|
||||
# game/indepth_transitions.rpy:401
|
||||
translate spanish demo_pushmove_transitions_124f375d:
|
||||
|
||||
# "There's pushright..."
|
||||
"Está pushright ..."
|
||||
|
||||
# game/indepth_transitions.rpy:408
|
||||
translate spanish demo_pushmove_transitions_ce380ccb:
|
||||
|
||||
# "...pushleft..."
|
||||
"...pushleft..."
|
||||
|
||||
# game/indepth_transitions.rpy:416
|
||||
translate spanish demo_pushmove_transitions_77629638:
|
||||
|
||||
# "...pushdown..."
|
||||
"...pushdown..."
|
||||
|
||||
# game/indepth_transitions.rpy:424
|
||||
translate spanish demo_pushmove_transitions_b7f33c95:
|
||||
|
||||
# "... and pushup. And that's it the for the PushMove-based transitions."
|
||||
"... y pushup. Y eso es todo para las transiciones basadas en PushMove."
|
||||
|
||||
# game/indepth_transitions.rpy:434
|
||||
translate spanish demo_movetransition_14df0e34:
|
||||
|
||||
# e "The most common MoveTransition is move, which slides around images that have changed position on the screen."
|
||||
e "La MoveTransition más común es move, que se desliza imágenes que han cambiado de posición en la pantalla."
|
||||
|
||||
# game/indepth_transitions.rpy:442
|
||||
translate spanish demo_movetransition_84e40422:
|
||||
|
||||
# e "Just like that."
|
||||
e "Así."
|
||||
|
||||
# game/indepth_transitions.rpy:446
|
||||
translate spanish demo_movetransition_098ee9f1:
|
||||
|
||||
# e "There are also the moveout and movein transitions."
|
||||
e "También están las transiciones de moveout y movein."
|
||||
|
||||
# game/indepth_transitions.rpy:448
|
||||
translate spanish demo_movetransition_09748f81:
|
||||
|
||||
# e "The moveout transitions (moveoutleft, moveoutright, moveouttop, and moveoutbottom) slide hidden images off the appropriate side of the screen."
|
||||
e "Las transiciones de movimiento (moveoutlft, moveoutright, moveouttop y moveoutbottom) deslizan las imágenes ocultas del lado apropiado de la pantalla."
|
||||
|
||||
# game/indepth_transitions.rpy:450
|
||||
translate spanish demo_movetransition_5edf6007:
|
||||
|
||||
# e "The movein transitions (moveinleft, moveinright, moveintop, and moveinbottom) slide in new images."
|
||||
e "Las transiciones de movimiento (moveinleft, moveinright, moveintop y moveinbottom) deslizan dentro nuevas imágenes."
|
||||
|
||||
# game/indepth_transitions.rpy:452
|
||||
translate spanish demo_movetransition_20946d36:
|
||||
|
||||
# e "Let's see them all in action."
|
||||
e "Vamos a verlos todas en acción."
|
||||
|
||||
# game/indepth_transitions.rpy:487
|
||||
translate spanish demo_movetransition_569952e3:
|
||||
|
||||
# e "That's it for the moveins and moveouts."
|
||||
e "Eso es todo para los moveins y moveouts."
|
||||
|
||||
# game/indepth_transitions.rpy:489
|
||||
translate spanish demo_movetransition_bbb75540:
|
||||
|
||||
# e "Finally, there are the zoomin and zoomout transitions, which show and hide things using a zoom."
|
||||
e "Finalmente, están las transiciones zoomin y zoomout, que muestran y ocultan cosas usando un zoom."
|
||||
|
||||
# game/indepth_transitions.rpy:499
|
||||
translate spanish demo_movetransition_dc5ccd54:
|
||||
|
||||
# e "And that's all there is."
|
||||
e "Y eso es todo lo que hay."
|
||||
|
||||
# game/indepth_transitions.rpy:508
|
||||
translate spanish demo_alphadissolve_51613c02:
|
||||
|
||||
# e "The AlphaDissolve transition lets you use one displayable to combine two others. Click, and I'll show you an example."
|
||||
e "La transición AlphaDissolve te permite usar un visualizable para combinar otros dos. Haz click, y te mostraré un ejemplo."
|
||||
|
||||
# game/indepth_transitions.rpy:518
|
||||
translate spanish demo_alphadissolve_7c08cf8b:
|
||||
|
||||
# e "The AlphaDissolve displayable takes a control displayable, usually an ATL transform."
|
||||
e "El AlphaDissolve visualizable toma un visualizable de control, generalmente una transformación ATL."
|
||||
|
||||
# game/indepth_transitions.rpy:523
|
||||
translate spanish demo_alphadissolve_068e3e98:
|
||||
|
||||
# e "To be useful, the control displayable should be partially transparent."
|
||||
e "Para ser útil, el visualizable de control debe ser parcialmente transparente."
|
||||
|
||||
# game/indepth_transitions.rpy:525
|
||||
translate spanish demo_alphadissolve_6a1b6203:
|
||||
|
||||
# e "During an AlphaDissolve, the old screen is used to fill the transparent areas of the image, while the new screen fills the opaque areas."
|
||||
e "Durante un AlphaDissolve, la pantalla antigua se usa para rellenar las áreas transparentes de la imagen, mientras que la nueva pantalla llena las áreas opacas."
|
||||
|
||||
# game/indepth_transitions.rpy:529
|
||||
translate spanish demo_alphadissolve_80a728b6:
|
||||
|
||||
# e "For our spotlight example, the old screen is this all-black image."
|
||||
e "Para nuestro ejemplo spotlight, la pantalla antigua es esta imagen completamente negra."
|
||||
|
||||
# game/indepth_transitions.rpy:534
|
||||
translate spanish demo_alphadissolve_ce4380eb:
|
||||
|
||||
# e "The new screen is me just standing here."
|
||||
e "La nueva pantalla soy yo de pie aquí."
|
||||
|
||||
# game/indepth_transitions.rpy:542
|
||||
translate spanish demo_alphadissolve_2e95917b:
|
||||
|
||||
# e "By combining them using AlphaDissolve, we can build a complicated effect out of simpler parts."
|
||||
e "Al combinarlos con AlphaDissolve, podemos crear un efecto complicado a partir de partes más simples."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "Simple Transitions"
|
||||
new "Transiciones Simples"
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "ImageDissolve Transitions"
|
||||
new "Transiciones ImageDissolve"
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "MoveTransition Transitions"
|
||||
new "Transiciones MoveTransition"
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "CropMove Transitions"
|
||||
new "Transiciones CropMove"
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "PushMove Transitions"
|
||||
new "Transiciones PushMove"
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "AlphaDissolve Transitions"
|
||||
new "Transiciones AlphaDissolve"
|
||||
|
||||
# indepth_transitions.rpy:58
|
||||
old "How about something else?"
|
||||
new "¿Que hay de otra cosa?"
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
|
||||
# game/indepth_translations.rpy:12
|
||||
translate spanish translations_c4ef181f:
|
||||
|
||||
# e "Ren'Py includes support for translating your game into languages other than the one it was originally written in."
|
||||
e "Ren'Py incluye soporte para traducir tu juego a otros idiomas además del que se escribió originalmente."
|
||||
|
||||
# game/indepth_translations.rpy:14
|
||||
translate spanish translations_20b9a600:
|
||||
|
||||
# e "This includes the translation of every string in the game, including dialogue, menu choice, and interface strings, and of images and other assets."
|
||||
e "Esto incluye la traducción de cada cadena en el juego, incluidos los diálogos, las opciones de menú y las cadenas de interfaz, y de imágenes y otros recursos."
|
||||
|
||||
# game/indepth_translations.rpy:16
|
||||
translate spanish translations_07c7643c:
|
||||
|
||||
# e "While Ren'Py can find dialogue and menu choice strings for you, you'll have to indicate which other strings need translation."
|
||||
e "Si bien Ren'Py puede encontrar cadenas de diálogo y opciones de menú por ti, deberás indicar qué otras cadenas necesitan traducción."
|
||||
|
||||
# game/indepth_translations.rpy:20
|
||||
translate spanish translations_317d73e5:
|
||||
|
||||
# e "For example, here is how we define a character and her name."
|
||||
e "Por ejemplo, aquí es cómo definimos un personaje y su nombre."
|
||||
|
||||
# game/indepth_translations.rpy:24
|
||||
translate spanish translations_ab0f3c94:
|
||||
|
||||
# e "To mark Lucy's name as translatable, we surround it by parentheses preceded by a single underscore."
|
||||
e "Para marcar el nombre de Lucy como traducible, lo rodeamos con paréntesis precedidos por un solo guión bajo."
|
||||
|
||||
# game/indepth_translations.rpy:26
|
||||
translate spanish translations_c81acfc7:
|
||||
|
||||
# e "Notice how we don't translate the reddish color that we use for her name. That stays the same for all languages."
|
||||
e "Observe cómo no traducimos el color rojizo que usamos para su nombre. Eso sigue siendo el mismo para todos los idiomas."
|
||||
|
||||
# game/indepth_translations.rpy:33
|
||||
translate spanish translations_8272a0ef:
|
||||
|
||||
# e "Once that's done, you can generate the translation files. That's done by going to the launcher, and clicking translate."
|
||||
e "Una vez hecho esto, puedes generar los archivos de traducción. Eso se hace al ir al launcher y hacer clic en traducir."
|
||||
|
||||
# game/indepth_translations.rpy:35
|
||||
translate spanish translations_fde34832:
|
||||
|
||||
# e "After you type in the name of the language you'll be translating to, choosing Generate Translations will scan your game and create translation files."
|
||||
e "Después de escribir el nombre del idioma al que vas a traducir, al elegir Generar Traducciones escaneará tu juego y creará archivos de traducción."
|
||||
|
||||
# game/indepth_translations.rpy:37
|
||||
translate spanish translations_e2ebb4af:
|
||||
|
||||
# e "The files will be generated in game/tl/language, where language is the name of the language you typed in."
|
||||
e "Los archivos se generarán en game/tl/language, donde language es el nombre del idioma que escribiste."
|
||||
|
||||
# game/indepth_translations.rpy:39
|
||||
translate spanish translations_28ec40b9:
|
||||
|
||||
# e "You'll need to edit those files to include translations for everything in your game."
|
||||
e "Tendrás que editar esos archivos para incluir traducciones de todo lo que hay en tu juego."
|
||||
|
||||
# game/indepth_translations.rpy:41
|
||||
translate spanish translations_f6d3fd2d:
|
||||
|
||||
# e "If you want to localize image files, you can also place them in game/tl/language."
|
||||
e "Si desea localizar archivos de imagen, también puede colocarlos en game/tl/language."
|
||||
|
||||
# game/indepth_translations.rpy:48
|
||||
translate spanish translations_71bf6e72:
|
||||
|
||||
# e "If the default fonts used by the game do not support the language you are translating to, you will have to change them."
|
||||
e "Si las fuentes predeterminadas utilizadas por el juego no son compatibles con el idioma al que estás traduciendo, tendrás que cambiarlas."
|
||||
|
||||
# game/indepth_translations.rpy:50
|
||||
translate spanish translations_82c9748e:
|
||||
|
||||
# e "The translate python statement can be used to set the values of gui variables to change the font."
|
||||
e "La sentencia translate python se puede usar para establecer los valores de las variables gui para cambiar la fuente."
|
||||
|
||||
# game/indepth_translations.rpy:52
|
||||
translate spanish translations_a0042025:
|
||||
|
||||
# e "The translate style statement sets style properties more directly."
|
||||
e "La sentencia translate style establece las propiedades de estilo más directamente."
|
||||
|
||||
# game/indepth_translations.rpy:54
|
||||
translate spanish translations_b10990ce:
|
||||
|
||||
# e "If you need to add new files, such as font files, you can place them into the game/tl/language directory where Ren'Py will find them."
|
||||
e "Si necesita agregar nuevos archivos, como archivos de fuentes, puede colocarlos en el directorio game/tl/language donde Ren'Py los encontrará."
|
||||
|
||||
# game/indepth_translations.rpy:58
|
||||
translate spanish translations_01fcacc2:
|
||||
|
||||
# e "Finally, you'll have to add support for picking the language of the game. That usually goes into the preferences screen, found in screens.rpy."
|
||||
e "Finalmente, tendrás que agregar soporte para elegir el idioma del juego. Eso usualmente va a la pantalla de preferencias, que se encuentra en screens.rpy."
|
||||
|
||||
# game/indepth_translations.rpy:60
|
||||
translate spanish translations_a91befcc:
|
||||
|
||||
# e "Here's an excerpt of the preferences screen of this tutorial. The Language action tells Ren'Py to change the language. It takes a string giving a language name, or None."
|
||||
e "Aquí hay un extracto de la pantalla de preferencias de este tutorial. La action Language le dice a Ren'Py que cambie el idioma. Se necesita una cadena que da un nombre de idioma, o None."
|
||||
|
||||
# game/indepth_translations.rpy:62
|
||||
translate spanish translations_9b7d6401:
|
||||
|
||||
# e "The None language is special, as it's the default language that the visual novel was written in. Since this tutorial was written in English, Language(None) selects English."
|
||||
e "El idioma None es especial, ya que es el idioma predeterminado en el que se escribió la novela visual. Dado que este tutorial fue escrito en inglés, Language(None) selecciona inglés."
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# options.rpy:15
|
||||
old "Ren'Py Tutorial Game"
|
||||
new "Juego Tutorial de Ren'Py"
|
||||
|
||||
@@ -0,0 +1,327 @@
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# screens.rpy:261
|
||||
old "Back"
|
||||
new "Atrás"
|
||||
|
||||
# screens.rpy:262
|
||||
old "History"
|
||||
new "Historial"
|
||||
|
||||
# screens.rpy:263
|
||||
old "Skip"
|
||||
new "Saltar"
|
||||
|
||||
# screens.rpy:264
|
||||
old "Auto"
|
||||
new "Auto"
|
||||
|
||||
# screens.rpy:265
|
||||
old "Save"
|
||||
new "Guardar"
|
||||
|
||||
# screens.rpy:266
|
||||
old "Q.Save"
|
||||
new "Guardar R."
|
||||
|
||||
# screens.rpy:267
|
||||
old "Q.Load"
|
||||
new "Cargar R."
|
||||
|
||||
# screens.rpy:268
|
||||
old "Prefs"
|
||||
new "Prefs."
|
||||
|
||||
# screens.rpy:309
|
||||
old "Start"
|
||||
new "Comenzar"
|
||||
|
||||
# screens.rpy:317
|
||||
old "Load"
|
||||
new "Cargar"
|
||||
|
||||
# screens.rpy:319
|
||||
old "Preferences"
|
||||
new "Opciones"
|
||||
|
||||
# screens.rpy:323
|
||||
old "End Replay"
|
||||
new "Finaliza repetición"
|
||||
|
||||
# screens.rpy:327
|
||||
old "Main Menu"
|
||||
new "Menú principal"
|
||||
|
||||
# screens.rpy:329
|
||||
old "About"
|
||||
new "Acerca de"
|
||||
|
||||
# screens.rpy:334
|
||||
old "Help"
|
||||
new "Ayuda"
|
||||
|
||||
# screens.rpy:337
|
||||
old "Quit"
|
||||
new "Salir"
|
||||
|
||||
# screens.rpy:480
|
||||
old "Return"
|
||||
new "Volver"
|
||||
|
||||
# screens.rpy:564
|
||||
old "Version [config.version!t]\n"
|
||||
new "Versión [config.version!t]\n"
|
||||
|
||||
# screens.rpy:570
|
||||
old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
|
||||
new "Hecho con {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
|
||||
|
||||
# screens.rpy:610
|
||||
old "Page {}"
|
||||
new "Página {}"
|
||||
|
||||
# screens.rpy:610
|
||||
old "Automatic saves"
|
||||
new "Grabación automática"
|
||||
|
||||
# screens.rpy:610
|
||||
old "Quick saves"
|
||||
new "Grabación rápida"
|
||||
|
||||
# screens.rpy:652
|
||||
old "{#file_time}%A, %B %d %Y, %H:%M"
|
||||
new "{#file_time}%A, %d %B %Y, %H:%M"
|
||||
|
||||
# screens.rpy:652
|
||||
old "empty slot"
|
||||
new "vacío"
|
||||
|
||||
# screens.rpy:669
|
||||
old "<"
|
||||
new "<"
|
||||
|
||||
# screens.rpy:672
|
||||
old "{#auto_page}A"
|
||||
new "{#auto_page}A"
|
||||
|
||||
# screens.rpy:675
|
||||
old "{#quick_page}Q"
|
||||
new "{#quick_page}R"
|
||||
|
||||
# screens.rpy:681
|
||||
old ">"
|
||||
new ">"
|
||||
|
||||
# screens.rpy:743
|
||||
old "Display"
|
||||
new "Pantalla"
|
||||
|
||||
# screens.rpy:744
|
||||
old "Window"
|
||||
new "Ventana"
|
||||
|
||||
# screens.rpy:745
|
||||
old "Fullscreen"
|
||||
new "Pant. completa"
|
||||
|
||||
# screens.rpy:757
|
||||
old "Unseen Text"
|
||||
new "Texto no visto"
|
||||
|
||||
# screens.rpy:758
|
||||
old "After Choices"
|
||||
new "Tras opciones"
|
||||
|
||||
# screens.rpy:764
|
||||
old "Examples"
|
||||
new "Ejemplos"
|
||||
|
||||
# screens.rpy:773
|
||||
old "Language"
|
||||
new "Idioma"
|
||||
|
||||
# screens.rpy:794
|
||||
old "Text Speed"
|
||||
new "Veloc. texto"
|
||||
|
||||
# screens.rpy:798
|
||||
old "Auto-Forward Time"
|
||||
new "Veloc. auto-avance"
|
||||
|
||||
# screens.rpy:805
|
||||
old "Music Volume"
|
||||
new "Volumen música"
|
||||
|
||||
# screens.rpy:812
|
||||
old "Sound Volume"
|
||||
new "Volumen sonido"
|
||||
|
||||
# screens.rpy:818
|
||||
old "Test"
|
||||
new "Prueba"
|
||||
|
||||
# screens.rpy:822
|
||||
old "Voice Volume"
|
||||
new "Volumen voz"
|
||||
|
||||
# screens.rpy:833
|
||||
old "Mute All"
|
||||
new "Silencia todo"
|
||||
|
||||
# screens.rpy:952
|
||||
old "The dialogue history is empty."
|
||||
new "El historial está vacío."
|
||||
|
||||
# screens.rpy:1018
|
||||
old "Keyboard"
|
||||
new "Teclado"
|
||||
|
||||
# screens.rpy:1019
|
||||
old "Mouse"
|
||||
new "Ratón"
|
||||
|
||||
# screens.rpy:1022
|
||||
old "Gamepad"
|
||||
new "Mando"
|
||||
|
||||
# screens.rpy:1035
|
||||
old "Enter"
|
||||
new "Enter"
|
||||
|
||||
# screens.rpy:1036
|
||||
old "Advances dialogue and activates the interface."
|
||||
new "Avanza el diálogo y activa la interfaz."
|
||||
|
||||
# screens.rpy:1039
|
||||
old "Space"
|
||||
new "Espacio"
|
||||
|
||||
# screens.rpy:1040
|
||||
old "Advances dialogue without selecting choices."
|
||||
new "Avanza el dilogo sin seleccionar opciones."
|
||||
|
||||
# screens.rpy:1043
|
||||
old "Arrow Keys"
|
||||
new "Teclas de flecha"
|
||||
|
||||
# screens.rpy:1044
|
||||
old "Navigate the interface."
|
||||
new "Navega la interfaz."
|
||||
|
||||
# screens.rpy:1047
|
||||
old "Escape"
|
||||
new "Escape"
|
||||
|
||||
# screens.rpy:1048
|
||||
old "Accesses the game menu."
|
||||
new "Accede al menú del juego."
|
||||
|
||||
# screens.rpy:1051
|
||||
old "Ctrl"
|
||||
new "Ctrl"
|
||||
|
||||
# screens.rpy:1052
|
||||
old "Skips dialogue while held down."
|
||||
new "Salta el diálogo mientras se presiona."
|
||||
|
||||
# screens.rpy:1055
|
||||
old "Tab"
|
||||
new "Tabulador"
|
||||
|
||||
# screens.rpy:1056
|
||||
old "Toggles dialogue skipping."
|
||||
new "Activa/desactiva el salto de diálogo."
|
||||
|
||||
# screens.rpy:1059
|
||||
old "Page Up"
|
||||
new "Av. pág."
|
||||
|
||||
# screens.rpy:1060
|
||||
old "Rolls back to earlier dialogue."
|
||||
new "Retrocede al diálogo anterior."
|
||||
|
||||
# screens.rpy:1063
|
||||
old "Page Down"
|
||||
new "Re. pág."
|
||||
|
||||
# screens.rpy:1064
|
||||
old "Rolls forward to later dialogue."
|
||||
new "Avanza hacia el diálogo siguiente."
|
||||
|
||||
# screens.rpy:1068
|
||||
old "Hides the user interface."
|
||||
new "Oculta la interfaz."
|
||||
|
||||
# screens.rpy:1072
|
||||
old "Takes a screenshot."
|
||||
new "Captura la pantalla."
|
||||
|
||||
# screens.rpy:1076
|
||||
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
|
||||
new "Activa/desactiva la asistencia por {a=https://www.renpy.org/l/voicing}voz-automática{/a}."
|
||||
|
||||
# screens.rpy:1082
|
||||
old "Left Click"
|
||||
new "Clic izquierdo"
|
||||
|
||||
# screens.rpy:1086
|
||||
old "Middle Click"
|
||||
new "Clic medio"
|
||||
|
||||
# screens.rpy:1090
|
||||
old "Right Click"
|
||||
new "Clic derecho"
|
||||
|
||||
# screens.rpy:1094
|
||||
old "Mouse Wheel Up\nClick Rollback Side"
|
||||
new "Rueda del ratón arriba\nClic en lado de retroceso"
|
||||
|
||||
# screens.rpy:1098
|
||||
old "Mouse Wheel Down"
|
||||
new "Rueda del ratón abajo"
|
||||
|
||||
# screens.rpy:1105
|
||||
old "Right Trigger\nA/Bottom Button"
|
||||
new "Gatillo derecho\nA/Botón inferior"
|
||||
|
||||
# screens.rpy:1109
|
||||
old "Left Trigger\nLeft Shoulder"
|
||||
new "Gatillo izquierdo\nBotón sup. frontal izq."
|
||||
|
||||
# screens.rpy:1113
|
||||
old "Right Shoulder"
|
||||
new "Botón sup. frontal der."
|
||||
|
||||
# screens.rpy:1117
|
||||
old "D-Pad, Sticks"
|
||||
new "D-Pad, Sticks"
|
||||
|
||||
# screens.rpy:1121
|
||||
old "Start, Guide"
|
||||
new "Comenzar, Guía"
|
||||
|
||||
# screens.rpy:1125
|
||||
old "Y/Top Button"
|
||||
new "Y/Botón superior"
|
||||
|
||||
# screens.rpy:1128
|
||||
old "Calibrate"
|
||||
new "Calibrar"
|
||||
|
||||
# screens.rpy:1193
|
||||
old "Yes"
|
||||
new "Sí"
|
||||
|
||||
# screens.rpy:1194
|
||||
old "No"
|
||||
new "No"
|
||||
|
||||
# screens.rpy:1240
|
||||
old "Skipping"
|
||||
new "Saltando"
|
||||
|
||||
# screens.rpy:1461
|
||||
old "Menu"
|
||||
new "Menú"
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
|
||||
# game/script.rpy:156
|
||||
translate spanish start_0e6a5bb4:
|
||||
|
||||
# e "Hi! My name is Eileen, and I'd like to welcome you to the Ren'Py tutorial."
|
||||
e "¡Hola! Me llamo Eileen y me gustaría darte la bienvenida al tutorial de Ren'Py."
|
||||
|
||||
# game/script.rpy:160
|
||||
translate spanish start_d3abb53c:
|
||||
|
||||
# e "In this tutorial, we'll teach you the basics of Ren'Py, so you can make games of your own. We'll also demonstrate many features, so you can see what Ren'Py is capable of."
|
||||
e "En este tutorial, te enseñaremos los conceptos básicos de Ren'Py, para que puedas crear tus propios juegos. También demostraremos muchas características, para que puedas ver de lo que Ren'Py es capaz."
|
||||
|
||||
# game/script.rpy:205
|
||||
translate spanish end_b2482727:
|
||||
|
||||
# e "Thank you for viewing this tutorial."
|
||||
e "Gracias por ver este tutorial."
|
||||
|
||||
# game/script.rpy:207
|
||||
translate spanish end_38362e36:
|
||||
|
||||
# e "If you'd like to see a full Ren'Py game, select \"The Question\" in the launcher."
|
||||
e "Si deseas ver un juego completo de Ren'Py, selecciona \"La pregunta\" en el lanzador."
|
||||
|
||||
# game/script.rpy:209
|
||||
translate spanish end_02527d05:
|
||||
|
||||
# e "You can download new versions of Ren'Py from {a=https://www.renpy.org/}https://www.renpy.org/{/a}. For help and discussion, check out the {a=https://lemmasoft.renai.us/forums/}Lemma Soft Forums{/a}."
|
||||
e "Puedes descargar nuevas versiones de Ren'Py desde {a=https://www.renpy.org/}https://www.renpy.org/{/a}. Para ayuda y discusión, echa un vistazo a {a=https://lemmasoft.renai.us/forums/}Lemma Soft Forums{/a}."
|
||||
|
||||
# game/script.rpy:211
|
||||
translate spanish end_c9d03136:
|
||||
|
||||
# e "We'd like to thank Piroshki for contributing my sprites; Mugenjohncel for Lucy, the band, and drawn backgrounds; and Jake for the magic circle."
|
||||
e "Nos gustaría agradecer a Piroshki por contribuir con mis sprites; Mugenjohncel por Lucy, la banda y los fondos; y Jake para el círculo mágico."
|
||||
|
||||
# game/script.rpy:213
|
||||
translate spanish end_762dc07a:
|
||||
|
||||
# e "The background music is \"Sunflower Slow Drag\", by Scott Joplin and Scott Hayden, performed by the United States Marine Band. The concert music is by Alessio."
|
||||
e "La música de fondo es \"Sunflower Slow Drag\", de Scott Joplin y Scott Hayden, interpretada por la United States Marine Band. La música del concierto es de Alessio."
|
||||
|
||||
# game/script.rpy:217
|
||||
translate spanish end_a634d396:
|
||||
|
||||
# e "We look forward to seeing what you create with Ren'Py. Have fun!"
|
||||
e "Esperamos ver lo que creas con Ren'Py. ¡Que te diviertas!"
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# script.rpy:11
|
||||
old "Eileen"
|
||||
new "Eileen"
|
||||
|
||||
# script.rpy:56
|
||||
old "Quickstart"
|
||||
new "Inicio rápido"
|
||||
|
||||
# script.rpy:58
|
||||
old "Player Experience"
|
||||
new "Experiencia de jugador"
|
||||
|
||||
# script.rpy:59
|
||||
old "Creating a New Game"
|
||||
new "Creando un nuevo juego"
|
||||
|
||||
# script.rpy:60
|
||||
old "Writing Dialogue"
|
||||
new "Escribiendo un dialogo"
|
||||
|
||||
# script.rpy:61
|
||||
old "Adding Images"
|
||||
new "Añadiendo Imágenes"
|
||||
|
||||
# script.rpy:62
|
||||
old "Positioning Images"
|
||||
new "Posicionando Imágenes"
|
||||
|
||||
# script.rpy:63
|
||||
old "Transitions"
|
||||
new "Transiciones"
|
||||
|
||||
# script.rpy:64
|
||||
old "Music and Sound Effects"
|
||||
new "Música y efectos de sonido"
|
||||
|
||||
# script.rpy:65
|
||||
old "Choices and Python"
|
||||
new "Elecciones y Python"
|
||||
|
||||
# script.rpy:66
|
||||
old "Input and Interpolation"
|
||||
new "Entrada e interpolación"
|
||||
|
||||
# script.rpy:67
|
||||
old "Video Playback"
|
||||
new "Reproducción de vídeo"
|
||||
|
||||
# script.rpy:68
|
||||
old "NVL Mode"
|
||||
new "Modo VNL"
|
||||
|
||||
# script.rpy:69
|
||||
old "Tools and the Interactive Director"
|
||||
new "Herramientas y el director interactivo"
|
||||
|
||||
# script.rpy:70
|
||||
old "Building Distributions"
|
||||
new "Construllendo Distribuciones"
|
||||
|
||||
# script.rpy:72
|
||||
old "In Depth"
|
||||
new "A fondo"
|
||||
|
||||
# script.rpy:74
|
||||
old "Text Tags, Escapes, and Interpolation"
|
||||
new "Etiquetas de Texto, Escapes e Interpolación"
|
||||
|
||||
# script.rpy:75
|
||||
old "Character Objects"
|
||||
new "Objetos Character"
|
||||
|
||||
# script.rpy:76
|
||||
old "Simple Displayables"
|
||||
new "Visualizables simples"
|
||||
|
||||
# script.rpy:77
|
||||
old "Transition Gallery"
|
||||
new "Galería de transiciones"
|
||||
|
||||
# script.rpy:80
|
||||
old "Position Properties"
|
||||
new "Propiedades de posición"
|
||||
|
||||
# script.rpy:83
|
||||
old "Transforms and Animation"
|
||||
new "Transformaciones y animación."
|
||||
|
||||
# script.rpy:84
|
||||
old "Transform Properties"
|
||||
new "Propiedades de transformación"
|
||||
|
||||
# script.rpy:86
|
||||
old "GUI Customization"
|
||||
new "Personalización de GUI"
|
||||
|
||||
# script.rpy:87
|
||||
old "Styles and Style Properties"
|
||||
new "Estilos y propiedades de estilo"
|
||||
|
||||
# script.rpy:88
|
||||
old "Screen Basics"
|
||||
new "Fundamentos de Pantallas"
|
||||
|
||||
# script.rpy:89
|
||||
old "Screen Displayables"
|
||||
new "Visualizables Screen"
|
||||
|
||||
# script.rpy:91
|
||||
old "Minigames and CDDs"
|
||||
new "Minijuegos y CDDs"
|
||||
|
||||
# script.rpy:92
|
||||
old "Translations"
|
||||
new "Traducciones"
|
||||
|
||||
# script.rpy:129
|
||||
old "That's enough for now."
|
||||
new "Es suficiente por ahora."
|
||||
|
||||
# script.rpy:168
|
||||
old "What would you like to see?"
|
||||
new "¿Qué te gustaría ver?"
|
||||
|
||||
# script.rpy:170
|
||||
old "Is there anything else you'd like to see?"
|
||||
new "¿Hay algo más que te gustaría ver?"
|
||||
|
||||
@@ -0,0 +1,651 @@
|
||||
|
||||
# game/tutorial_atl.rpy:205
|
||||
translate spanish tutorial_positions_a09a3fd1:
|
||||
|
||||
# e "In this tutorial, I'll teach you how Ren'Py positions things on the screen. But before that, let's learn a little bit about how Python handles numbers."
|
||||
e "En este tutorial, te enseñaré cómo Ren'Py coloca las cosas en la pantalla. Pero antes de eso, aprendamos un poco sobre cómo Python maneja los números."
|
||||
|
||||
# game/tutorial_atl.rpy:207
|
||||
translate spanish tutorial_positions_ba39aabc:
|
||||
|
||||
# e "There are two main kinds of numbers in Python: integers and floating point numbers. An integer consists entirely of digits, while a floating point number has a decimal point."
|
||||
e "Hay dos tipos principales de números en Python: enteros y números de punto flotante. Un entero consta de dígitos, mientras que un número de punto flotante tiene un punto decimal."
|
||||
|
||||
# game/tutorial_atl.rpy:209
|
||||
translate spanish tutorial_positions_a60b775d:
|
||||
|
||||
# e "For example, 100 is an integer, while 0.5 is a floating point number, or float for short. In this system, there are two zeros: 0 is an integer, and 0.0 is a float."
|
||||
e "Por ejemplo, 100 es un número entero, mientras que 0.5 es un número de punto flotante, o flotante para abreviar. En este sistema, hay dos ceros: 0 es un número entero y 0.0 es un flotante."
|
||||
|
||||
# game/tutorial_atl.rpy:211
|
||||
translate spanish tutorial_positions_7f1a560c:
|
||||
|
||||
# e "Ren'Py uses integers to represent absolute coordinates, and floats to represent fractions of an area with known size."
|
||||
e "Ren'Py usa números enteros para representar coordenadas absolutas y flotantes para representar fracciones de un área con un tamaño conocido."
|
||||
|
||||
# game/tutorial_atl.rpy:213
|
||||
translate spanish tutorial_positions_8e7d3e52:
|
||||
|
||||
# e "When we're positioning something, the area is usually the entire screen."
|
||||
e "Cuando estamos posicionando algo, el área es usualmente la pantalla completa."
|
||||
|
||||
# game/tutorial_atl.rpy:215
|
||||
translate spanish tutorial_positions_fdcf9d8b:
|
||||
|
||||
# e "Let me get out of the way, and I'll show you where some positions are."
|
||||
e "Déjame salir del camino y te mostraré dónde están algunas posiciones."
|
||||
|
||||
# game/tutorial_atl.rpy:229
|
||||
translate spanish tutorial_positions_76d7a5bf:
|
||||
|
||||
# e "The origin is the upper-left corner of the screen. That's where the x position (xpos) and the y position (ypos) are both zero."
|
||||
e "El origen es la esquina superior izquierda de la pantalla. Ahí es donde la posición x (xpos) y la posición y (ypos) son ambas cero."
|
||||
|
||||
# game/tutorial_atl.rpy:235
|
||||
translate spanish tutorial_positions_be14c7c3:
|
||||
|
||||
# e "When we increase xpos, we move to the right. So here's an xpos of .5, meaning half the width across the screen."
|
||||
e "Cuando aumentamos xpos, nos movemos a la derecha. Así que aquí hay un xpos de .5, que significa la mitad del ancho en la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:240
|
||||
translate spanish tutorial_positions_9b91be6c:
|
||||
|
||||
# e "Increasing xpos to 1.0 moves us to the right-hand border of the screen."
|
||||
e "Al aumentar xpos a 1.0, nos movemos al borde derecho de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:246
|
||||
translate spanish tutorial_positions_2b293304:
|
||||
|
||||
# e "We can also use an absolute xpos, which is given in an absolute number of pixels from the left side of the screen. For example, since this window is 1280 pixels across, using an xpos of 640 will return the target to the center of the top row."
|
||||
e "También podemos usar un xpos absoluto, que se da en un número absoluto de píxeles desde el lado izquierdo de la pantalla. Por ejemplo, dado que esta ventana tiene 1280 píxeles de ancho, usar un xpos de 640 devolverá el objetivo al centro de la fila superior."
|
||||
|
||||
# game/tutorial_atl.rpy:248
|
||||
translate spanish tutorial_positions_c4d18c0a:
|
||||
|
||||
# e "The y-axis position, or ypos works the same way. Right now, we have a ypos of 0.0."
|
||||
e "La posición del eje y, o ypos, funciona de la misma manera. En este momento, tenemos un ypos de 0.0."
|
||||
|
||||
# game/tutorial_atl.rpy:254
|
||||
translate spanish tutorial_positions_16933a61:
|
||||
|
||||
# e "Here's a ypos of 0.5."
|
||||
e "Aquí hay un ypos de 0.5."
|
||||
|
||||
# game/tutorial_atl.rpy:259
|
||||
translate spanish tutorial_positions_6eb36777:
|
||||
|
||||
# e "A ypos of 1.0 specifies a position at the bottom of the screen. If you look carefully, you can see the position indicator spinning below the text window."
|
||||
e "Un ypos de 1.0 especifica una posición en la parte inferior de la pantalla. Si observa detenidamente, puede ver el indicador de posición girando debajo de la ventana de texto."
|
||||
|
||||
# game/tutorial_atl.rpy:261
|
||||
translate spanish tutorial_positions_a423050f:
|
||||
|
||||
# e "Like xpos, ypos can also be an integer. In this case, ypos would give the total number of pixels from the top of the screen."
|
||||
e "Como xpos, ypos también puede ser un número entero. En este caso, ypos daría el número total de píxeles desde la parte superior de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:267
|
||||
translate spanish tutorial_positions_bc7a809a:
|
||||
|
||||
# e "Can you guess where this position is, relative to the screen?" nointeract
|
||||
e "¿Puedes adivinar dónde está esta posición, relativa a la pantalla?" nointeract
|
||||
|
||||
# game/tutorial_atl.rpy:273
|
||||
translate spanish tutorial_positions_6f926e18:
|
||||
|
||||
# e "Sorry, that's wrong. The xpos is .75, and the ypos is .25."
|
||||
e "Lo siento, eso está mal. El xpos es .75, y el ypos es .25."
|
||||
|
||||
# game/tutorial_atl.rpy:275
|
||||
translate spanish tutorial_positions_5d5feb98:
|
||||
|
||||
# e "In other words, it's 75%% of the way from the left side, and 25%% of the way from the top."
|
||||
e "En otras palabras, es 75%% del lado izquierdo, y 25%% del camino desde la parte superior."
|
||||
|
||||
# game/tutorial_atl.rpy:279
|
||||
translate spanish tutorial_positions_77b45218:
|
||||
|
||||
# e "Good job! You got that position right."
|
||||
e "¡Buen trabajo! Tienes la posición correcta."
|
||||
|
||||
# game/tutorial_atl.rpy:283
|
||||
translate spanish tutorial_positions_6f926e18_1:
|
||||
|
||||
# e "Sorry, that's wrong. The xpos is .75, and the ypos is .25."
|
||||
e "Lo siento, está mal. El xpos es .75, y el ypos es .25."
|
||||
|
||||
# game/tutorial_atl.rpy:285
|
||||
translate spanish tutorial_positions_5d5feb98_1:
|
||||
|
||||
# e "In other words, it's 75%% of the way from the left side, and 25%% of the way from the top."
|
||||
e "En otras palabras, es 75%% del lado izquierdo, y 25%% del camino desde la parte superior."
|
||||
|
||||
# game/tutorial_atl.rpy:299
|
||||
translate spanish tutorial_positions_e4380a83:
|
||||
|
||||
# e "The second position we care about is the anchor. The anchor is a spot on the thing being positioned."
|
||||
e "La segunda posición que nos importa es el anchor. El anchor es un punto en la imagen que se coloca."
|
||||
|
||||
# game/tutorial_atl.rpy:301
|
||||
translate spanish tutorial_positions_d1db1246:
|
||||
|
||||
# e "For example, here we have an xanchor of 0.0 and a yanchor of 0.0. It's in the upper-left corner of the logo image."
|
||||
e "Por ejemplo, aquí tenemos un xanchor de 0.0 y un yanchor de 0.0. Está en la esquina superior izquierda de la imagen del logotipo."
|
||||
|
||||
# game/tutorial_atl.rpy:306
|
||||
translate spanish tutorial_positions_6056873f:
|
||||
|
||||
# e "When we increase the xanchor to 1.0, the anchor moves to the right corner of the image."
|
||||
e "Cuando aumentamos el xanchor a 1.0, el anchor se mueve a la esquina derecha de la imagen."
|
||||
|
||||
# game/tutorial_atl.rpy:311
|
||||
translate spanish tutorial_positions_7cdb8dcc:
|
||||
|
||||
# e "Similarly, when both xanchor and yanchor are 1.0, the anchor is the bottom-right corner."
|
||||
e "De manera similar, cuando tanto xanchor como yanchor son 1.0, el anchor es la esquina inferior derecha."
|
||||
|
||||
# game/tutorial_atl.rpy:318
|
||||
translate spanish tutorial_positions_03a07da8:
|
||||
|
||||
# e "To place an image on the screen, we need both the position and the anchor."
|
||||
e "Para colocar una imagen en la pantalla, necesitamos tanto la posición como el anchor."
|
||||
|
||||
# game/tutorial_atl.rpy:326
|
||||
translate spanish tutorial_positions_8945054f:
|
||||
|
||||
# e "We then line them up, so that both the position and anchor are at the same point on the screen."
|
||||
e "Luego los alineamos, de modo que tanto la posición como el anchor estén en el mismo punto de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:336
|
||||
translate spanish tutorial_positions_2b184a93:
|
||||
|
||||
# e "When we place both in the upper-left corner, the image moves to the upper-left corner of the screen."
|
||||
e "Cuando colocamos ambos en la esquina superior izquierda, la imagen se mueve a la esquina superior izquierda de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:345
|
||||
translate spanish tutorial_positions_5aac4f3f:
|
||||
|
||||
# e "With the right combination of position and anchor, any place on the screen can be specified, without even knowing the size of the image."
|
||||
e "Con la combinación correcta de posición y anchor, se puede especificar cualquier lugar en la pantalla, sin siquiera saber el tamaño de la imagen."
|
||||
|
||||
# game/tutorial_atl.rpy:357
|
||||
translate spanish tutorial_positions_3b59b797:
|
||||
|
||||
# e "It's often useful to set xpos and xanchor to the same value. We call that xalign, and it gives a fractional position on the screen."
|
||||
e "A menudo es útil establecer xpos y xanchor en el mismo valor. Llamamos a eso xalign, y le da una posición fraccionaria en la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:362
|
||||
translate spanish tutorial_positions_b8ebf9fe:
|
||||
|
||||
# e "For example, when we set xalign to 0.0, things are aligned to the left side of the screen."
|
||||
e "Por ejemplo, cuando configuramos xalign en 0.0, las cosas se alinean al lado izquierdo de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:367
|
||||
translate spanish tutorial_positions_8ce35d52:
|
||||
|
||||
# e "When we set it to 1.0, then we're aligned to the right side of the screen."
|
||||
e "Cuando lo configuramos a 1.0, entonces estamos alineados al lado derecho de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:372
|
||||
translate spanish tutorial_positions_6745825f:
|
||||
|
||||
# e "And when we set it to 0.5, we're back to the center of the screen."
|
||||
e "Y cuando lo configuramos a 0.5, volvemos al centro de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:374
|
||||
translate spanish tutorial_positions_64428a07:
|
||||
|
||||
# e "Setting yalign is similar, except along the y-axis."
|
||||
e "La configuración de yalign es similar, excepto que es a lo largo del eje y."
|
||||
|
||||
# game/tutorial_atl.rpy:376
|
||||
translate spanish tutorial_positions_cfb77d42:
|
||||
|
||||
# e "Remember that xalign is just setting xpos and xanchor to the same value, and yalign is just setting ypos and yanchor to the same value."
|
||||
e "Recuerde que xalign solo establece xpos y xanchor en el mismo valor, y yalign solo establece ypos y yanchor en el mismo valor."
|
||||
|
||||
# game/tutorial_atl.rpy:381
|
||||
translate spanish tutorial_positions_cfc1723e:
|
||||
|
||||
# e "The xcenter and ycenter properties position the center of the image. Here, with xcenter set to .75, the center of the image is three-quarters of the way to the right side of the screen."
|
||||
e "Las propiedades xcenter y ycenter colocan el centro de la imagen. Aquí, con xcenter establecido en .75, el centro de la imagen está a tres cuartos del lado derecho de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:386
|
||||
translate spanish tutorial_positions_7728dbf9:
|
||||
|
||||
# e "The difference between xalign and xcenter is more obvious when xcenter is 1.0, and the image is halfway off the right side of the screen."
|
||||
e "La diferencia entre xalign y xcenter es más obvia cuando xcenter es 1.0, y la imagen está a mitad de camino del lado derecho de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:394
|
||||
translate spanish tutorial_positions_1b1cedc6:
|
||||
|
||||
# e "There are the xoffset and yoffset properties, which are applied after everything else, and offset things to the right or bottom, respectively."
|
||||
e "Existen las propiedades xoffset y yoffset, que se aplican después de todo lo demás, y compensan las cosas a la derecha o al fondo, respectivamente."
|
||||
|
||||
# game/tutorial_atl.rpy:399
|
||||
translate spanish tutorial_positions_e6da2798:
|
||||
|
||||
# e "Of course, you can use negative numbers to offset things to the left and top."
|
||||
e "Por supuesto, puedes usar números negativos para compensar cosas a la izquierda y arriba."
|
||||
|
||||
# game/tutorial_atl.rpy:404
|
||||
translate spanish tutorial_positions_e0fe2d81:
|
||||
|
||||
# e "Lastly, I'll mention that there are combined properties like align, pos, anchor, and center. Align takes a pair of numbers, and sets xalign to the first and yalign to the second. The others are similar."
|
||||
e "Por último, mencionaré que hay propiedades combinadas como align, pos, anchor y center. Align toma un par de números y establece xalign para el primero y yalign para el segundo. Los otros son similares."
|
||||
|
||||
# game/tutorial_atl.rpy:411
|
||||
translate spanish tutorial_positions_0f4ca2b6:
|
||||
|
||||
# e "Once you understand positions, you can use transformations to move things around the Ren'Py screen."
|
||||
e "Una vez que entiendas las posiciones, puedes usar transformaciones para mover cosas por toda la pantalla de Ren'Py."
|
||||
|
||||
# game/tutorial_atl.rpy:418
|
||||
translate spanish tutorial_atl_d5d6b62a:
|
||||
|
||||
# e "Ren'Py uses transforms to animate, manipulate, and place images. We've already seen the very simplest of transforms in use:"
|
||||
e "Una vez que entiendas las posiciones, puedes usar transformaciones para mover cosas toda la pantalla de Ren'Py."
|
||||
|
||||
# game/tutorial_atl.rpy:425
|
||||
translate spanish tutorial_atl_7e853c9d:
|
||||
|
||||
# e "Transforms can be very simple affairs that place the image somewhere on the screen, like the right transform."
|
||||
e "Las transformaciones pueden ser asuntos muy simples que colocan la imagen en algún lugar de la pantalla, como la transformación right."
|
||||
|
||||
# game/tutorial_atl.rpy:429
|
||||
translate spanish tutorial_atl_87a6ecbd:
|
||||
|
||||
# e "But transforms can also be far more complicated affairs, that introduce animation and effects into the mix. To demonstrate, let's have a Gratuitous Rock Concert!"
|
||||
e "Pero las transformaciones también pueden ser asuntos mucho más complicados, que introducen animación y efectos a la mezcla. Para demostrarlo, ¡tengamos un Concierto de Rock Gratuito!"
|
||||
|
||||
# game/tutorial_atl.rpy:437
|
||||
translate spanish tutorial_atl_65badef3:
|
||||
|
||||
# e "But first, let's have... a Gratuitous Rock Concert!"
|
||||
e "Pero primero, tengamos ... ¡un Concierto de Rock Gratuito!"
|
||||
|
||||
# game/tutorial_atl.rpy:445
|
||||
translate spanish tutorial_atl_e0d3c5ec:
|
||||
|
||||
# e "That was a lot of work, but it was built out of small parts."
|
||||
e "Eso fue mucho trabajo, pero fue construido con pequeñas partes."
|
||||
|
||||
# game/tutorial_atl.rpy:447
|
||||
translate spanish tutorial_atl_f2407514:
|
||||
|
||||
# e "Most transforms in Ren'Py are built using the Animation and Transform Language, or ATL for short."
|
||||
e "La mayoría de las transformaciones en Ren'Py se crean utilizando el lenguaje de animación y transformación, o ATL, para abreviar."
|
||||
|
||||
# game/tutorial_atl.rpy:449
|
||||
translate spanish tutorial_atl_1f22f875:
|
||||
|
||||
# e "There are currently three places where ATL can be used in Ren'Py."
|
||||
e "Actualmente hay tres lugares donde se puede usar ATL en Ren'Py."
|
||||
|
||||
# game/tutorial_atl.rpy:454
|
||||
translate spanish tutorial_atl_fd036bdf:
|
||||
|
||||
# e "The first place ATL can be used is as part of an image statement. Instead of a displayable, an image may be defined as a block of ATL code."
|
||||
e "El primer lugar donde se puede usar ATL es como parte de una sentencia image. En lugar de mostrarse, una imagen puede definirse como un bloque de código ATL."
|
||||
|
||||
# game/tutorial_atl.rpy:456
|
||||
translate spanish tutorial_atl_7cad2ab9:
|
||||
|
||||
# e "When used in this way, we have to be sure that ATL includes one or more displayables to actually show."
|
||||
e "Cuando se usa de esta manera, tenemos que asegurarnos de que ATL incluya uno o más elementos visualizables para mostrar realmente."
|
||||
|
||||
# game/tutorial_atl.rpy:461
|
||||
translate spanish tutorial_atl_c78b2a1e:
|
||||
|
||||
# e "The second way is through the use of the transform statement. This assigns the ATL block to a python variable, allowing it to be used in at clauses and inside other transforms."
|
||||
e "La segunda forma es a través del uso de la sentencia transform. Esto asigna el bloque ATL a una variable de python, lo que permite que se use en cláusulas at y dentro de otras transformaciones."
|
||||
|
||||
# game/tutorial_atl.rpy:473
|
||||
translate spanish tutorial_atl_da7a7759:
|
||||
|
||||
# e "Finally, an ATL block can be used as part of a show statement, instead of the at clause."
|
||||
e "Finalmente, un bloque ATL se puede usar como parte de una sentencia show, en lugar de la cláusula at."
|
||||
|
||||
# game/tutorial_atl.rpy:480
|
||||
translate spanish tutorial_atl_1dd345c6:
|
||||
|
||||
# e "When ATL is used as part of a show statement, values of properties exist even when the transform is changed. So even though a click your click stopped the motion, the image remains in the same place."
|
||||
e "Cuando se usa ATL como parte de una sentencia show, los valores de las propiedades existen incluso cuando se cambia la transformación. Así que aunque des clic yse detenga el movimiento, la imagen permanece en el mismo lugar."
|
||||
|
||||
# game/tutorial_atl.rpy:488
|
||||
translate spanish tutorial_atl_c21bc1d1:
|
||||
|
||||
# e "The key to ATL is what we call composeability. ATL is made up of relatively simple commands, which can be combined together to create complicated transforms."
|
||||
e "La clave para ATL es lo que llamamos composabilidad. ATL se compone de comandos relativamente simples, que se pueden combinar para crear transformaciones complicadas."
|
||||
|
||||
# game/tutorial_atl.rpy:490
|
||||
translate spanish tutorial_atl_ed82983f:
|
||||
|
||||
# e "Before I explain how ATL works, let me explain what animation and transformation are."
|
||||
e "Antes de explicar cómo funciona ATL, permítanme explicar qué son las animaciones y las transformaciones."
|
||||
|
||||
# game/tutorial_atl.rpy:495
|
||||
translate spanish tutorial_atl_2807adff:
|
||||
|
||||
# e "Animation is when the displayable being shown changes. For example, right now I am changing my expression."
|
||||
e "La animación es cuando el visualizable que se muestra cambia. Por ejemplo, ahora mismo estoy cambiando mi expresión."
|
||||
|
||||
# game/tutorial_atl.rpy:522
|
||||
translate spanish tutorial_atl_3eec202b:
|
||||
|
||||
# e "Transformation involves moving or distorting an image. This includes placing it on the screen, zooming it in and out, rotating it, and changing its opacity."
|
||||
e "Transformación implica mover o distorsionar una imagen. Esto incluye colocarlo en la pantalla, acercarlo y alejarlo, girarlo y cambiar su opacidad."
|
||||
|
||||
# game/tutorial_atl.rpy:530
|
||||
translate spanish tutorial_atl_fbc9bf83:
|
||||
|
||||
# e "To introduce ATL, let's start by looking at at a simple animation. Here's one that consists of five lines of ATL code, contained within an image statement."
|
||||
e "Para presentar ATL, comencemos observando una animación simple. Aquí hay una que consta de cinco líneas de código ATL, contenidas dentro de una sentencia image."
|
||||
|
||||
# game/tutorial_atl.rpy:532
|
||||
translate spanish tutorial_atl_bf92d973:
|
||||
|
||||
# e "To change a displayable, simply mention it on a line of ATL. Here, we're switching back and forth between two images."
|
||||
e "Para cambiar un visualizable, simplemente mencionelo en una línea de ATL. Aquí, estamos alternando entre dos imágenes."
|
||||
|
||||
# game/tutorial_atl.rpy:534
|
||||
translate spanish tutorial_atl_51a41db4:
|
||||
|
||||
# e "Since we're defining an image, the first line of ATL must give a displayable. Otherwise, there would be nothing to show."
|
||||
e "Ya que estamos definiendo una imagen, la primera línea de ATL debe dar una visualizable. De lo contrario, no habría nada que mostrar."
|
||||
|
||||
# game/tutorial_atl.rpy:536
|
||||
translate spanish tutorial_atl_3d065074:
|
||||
|
||||
# e "The second and fourth lines are pause statements, which cause ATL to wait half a second each before continuing. That's how we give the delay between images."
|
||||
e "Las líneas segunda y cuarta son sentencias pause, lo que hace que ATL espere medio segundo cada una antes de continuar. Así es como damos la demora entre las imágenes."
|
||||
|
||||
# game/tutorial_atl.rpy:538
|
||||
translate spanish tutorial_atl_60f2a5e8:
|
||||
|
||||
# e "The final line is a repeat statement. This causes the current block of ATL to be restarted. You can only have one repeat statement per block."
|
||||
e "La línea final es una sentencia repeat. Esto hace que el bloque actual de ATL se reinicie. Sólo puede tener una sentencia repeat por bloque."
|
||||
|
||||
# game/tutorial_atl.rpy:543
|
||||
translate spanish tutorial_atl_146cf4c4:
|
||||
|
||||
# e "If we were to write repeat 2 instead, the animation would loop twice, then stop."
|
||||
e "Si en su lugar escribieramos repeat 2, la animación se repetirá dos veces y luego se detendrá."
|
||||
|
||||
# game/tutorial_atl.rpy:548
|
||||
translate spanish tutorial_atl_d90b1838:
|
||||
|
||||
# e "Omitting the repeat statement means that the animation stops once we reach the end of the block of ATL code."
|
||||
e "Omitir la sentencia repeat significa que la animación se detiene una vez que llegamos al final del bloque del código ATL."
|
||||
|
||||
# game/tutorial_atl.rpy:554
|
||||
translate spanish tutorial_atl_e5872360:
|
||||
|
||||
# e "By default, displayables are replaced instantaneously. We can also use a with clause to give a transition between displayables."
|
||||
e "De forma predeterminada, los visualizables se reemplazan instantáneamente. También podemos usar una cláusula with para dar una transición entre visualizables."
|
||||
|
||||
# game/tutorial_atl.rpy:561
|
||||
translate spanish tutorial_atl_2e9d63ea:
|
||||
|
||||
# e "With animation done, we'll see how we can use ATL to transform images, starting with positioning an image on the screen."
|
||||
e "Teminamos con la animación, veremos cómo podemos usar ATL para transformar imágenes, comenzando con el posicionamiento de una imagen en la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:570
|
||||
translate spanish tutorial_atl_ddc55039:
|
||||
|
||||
# e "The simplest thing we can to is to statically position an image. This is done by giving the names of the position properties, followed by the property values."
|
||||
e "Lo más simple que podemos hacer es posicionar estáticamente una imagen. Esto se hace dando los nombres de las propiedades de posición, seguidos de los valores de propiedad."
|
||||
|
||||
# game/tutorial_atl.rpy:575
|
||||
translate spanish tutorial_atl_43516492:
|
||||
|
||||
# e "With a few more statements, we can move things around on the screen."
|
||||
e "Con unas cuantas sentencia más, podemos mover las cosas en la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:577
|
||||
translate spanish tutorial_atl_fb979287:
|
||||
|
||||
# e "This example starts the image off at the top-right of the screen, and waits a second. It then moves it to the left side, waits another second, and repeats."
|
||||
e "Este ejemplo inicia la imagen en la esquina superior derecha de la pantalla y espera un segundo. Luego lo mueve hacia el lado izquierdo, espera otro segundo y se repite."
|
||||
|
||||
# game/tutorial_atl.rpy:579
|
||||
translate spanish tutorial_atl_7650ec09:
|
||||
|
||||
# e "The pause and repeat statements are the same statements we used in our animations. They work throughout ATL code."
|
||||
e "Las sentencia pause y repeat son las mismas sentencias que usamos en nuestras animaciones. Funcionan a lo largo del código ATL."
|
||||
|
||||
# game/tutorial_atl.rpy:584
|
||||
translate spanish tutorial_atl_d3416d4f:
|
||||
|
||||
# e "Having the image jump around on the screen isn't all that useful. That's why ATL has the interpolation statement."
|
||||
e "Hacer que la imagen salte por la pantalla no es tan útil. Es por eso que ATL tiene la sentencia de interpolación."
|
||||
|
||||
# game/tutorial_atl.rpy:586
|
||||
translate spanish tutorial_atl_4e7512ec:
|
||||
|
||||
# e "The interpolation statement allows you to smoothly vary the value of a transform property, from an old to a new value."
|
||||
e "La sentencia de interpolación le permite variar suavemente el valor de una propiedad de transformación, de un valor antiguo a uno nuevo."
|
||||
|
||||
# game/tutorial_atl.rpy:588
|
||||
translate spanish tutorial_atl_685eeeaa:
|
||||
|
||||
# e "Here, we have an interpolation statement on the second ATL line. It starts off with the name of a time function, in this case linear."
|
||||
e "Aquí, tenemos una sentencia de interpolación en la segunda línea ATL. Comienza con el nombre de una función de tiempo, en este caso linear."
|
||||
|
||||
# game/tutorial_atl.rpy:590
|
||||
translate spanish tutorial_atl_c5cb49de:
|
||||
|
||||
# e "That's followed by an amount of time, in this case three seconds. It ends with a list of properties, each followed by its new value."
|
||||
e "A eso le sigue una cantidad de tiempo, en este caso tres segundos. Termina con una lista de propiedades, cada una seguida por su nuevo valor."
|
||||
|
||||
# game/tutorial_atl.rpy:592
|
||||
translate spanish tutorial_atl_04b8bc1d:
|
||||
|
||||
# e "The value of each property is interpolated from its value when the statement starts to the value at the end of the statement. This is done once per frame, allowing smooth animation."
|
||||
e "El valor de cada propiedad se interpola a partir de su valor cuando la sentencia comienza al valor al final de la sentencia. Esto se hace una vez por fotograma, permitiendo una animación suave."
|
||||
|
||||
# game/tutorial_atl.rpy:603
|
||||
translate spanish tutorial_atl_2958f397:
|
||||
|
||||
# e "ATL supports more complicated move types, like circle and spline motion. But I won't be showing those here."
|
||||
e "ATL admite tipos de movimiento más complicados, como el movimiento de círculo y spline. Pero no los mostraré aquí."
|
||||
|
||||
# game/tutorial_atl.rpy:607
|
||||
translate spanish tutorial_atl_d08fe8d9:
|
||||
|
||||
# e "Apart from displayables, pause, interpolation, and repeat, there are a few other statements we can use as part of ATL."
|
||||
e "Además de visualizables, pausas, interploaciones y repeticiones, hay algunas otras sentencias que podemos usar como parte de ATL."
|
||||
|
||||
# game/tutorial_atl.rpy:619
|
||||
translate spanish tutorial_atl_84b22ac0:
|
||||
|
||||
# e "ATL transforms created using the statement become ATL statements themselves. Since the default positions are also transforms, this means that we can use left, right, and center inside of an ATL block."
|
||||
e "Las transformaciones ATL creadas usando la sentencia se convierten en sentencias ATL. Dado que las posiciones predeterminadas también son transformaciones, esto significa que podemos usar left, derecha y centro dentro de un bloque ATL."
|
||||
|
||||
# game/tutorial_atl.rpy:635
|
||||
translate spanish tutorial_atl_331126c1:
|
||||
|
||||
# e "Here, we have two new statements. The block statement allows you to include a block of ATL code. Since the repeat statement applies to blocks, this lets you repeat only part of an ATL transform."
|
||||
e "Aquí tenemos dos nuevas sentencias. La sentencia block te permite incluir un bloque de código ATL. Como la sentencia repeat se aplica a los bloques, esto le permite repetir solo una parte de una transformación ATL."
|
||||
|
||||
# game/tutorial_atl.rpy:637
|
||||
translate spanish tutorial_atl_24f67b67:
|
||||
|
||||
# e "We also have the time statement, which runs after the given number of seconds have elapsed from the start of the block. It will run even if another statement is running, stopping the other statement."
|
||||
e "También tenemos la sentencia time, que se ejecuta después de que hayan transcurrido los segundos dados desde el inicio del bloque. Se ejecutará incluso si se está ejecutando otra sentencia, deteniendo la otra sentencia."
|
||||
|
||||
# game/tutorial_atl.rpy:639
|
||||
translate spanish tutorial_atl_b7709507:
|
||||
|
||||
# e "So this example bounces the image back and forth for eleven and a half seconds, and then moves it to the right side of the screen."
|
||||
e "Entonces, este ejemplo rebota la imagen de un lado a otro durante once segundos y medio, y luego la mueve hacia el lado derecho de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:653
|
||||
translate spanish tutorial_atl_f903bc3b:
|
||||
|
||||
# e "The parallel statement lets us run two blocks of ATL code at the same time."
|
||||
e "La sentencia parallel nos permite ejecutar dos bloques de código ATL al mismo tiempo."
|
||||
|
||||
# game/tutorial_atl.rpy:655
|
||||
translate spanish tutorial_atl_5d0f8f9d:
|
||||
|
||||
# e "Here, the top block move the image in the horizontal direction, and the bottom block moves it in the vertical direction. Since they're moving at different speeds, it looks like the image is bouncing on the screen."
|
||||
e "Aquí, el bloque superior mueve la imagen en la dirección horizontal, y el bloque inferior la mueve en la dirección vertical. Ya que se están moviendo a diferentes velocidades, parece que la imagen rebota en la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:669
|
||||
translate spanish tutorial_atl_28a7d27e:
|
||||
|
||||
# e "Finally, the choice statement makes Ren'Py randomly pick a block of ATL code. This allows you to add some variation as to what Ren'Py shows."
|
||||
e "Finalmente, la sentencia choice hace que Ren'Py elija aleatoriamente un bloque de código ATL. Esto le permite agregar alguna variación a lo que muestra Ren'Py."
|
||||
|
||||
# game/tutorial_atl.rpy:675
|
||||
translate spanish tutorial_atl_2265254b:
|
||||
|
||||
# e "This tutorial game has only scratched the surface of what you can do with ATL. For example, we haven't even covered the on and event statements. For more information, you might want to check out {a=https://renpy.org/doc/html/atl.html}the ATL chapter in the reference manual{/a}."
|
||||
e "Este juego tutorial solo ha arañado la superficie de lo que puedes hacer con ATL. Por ejemplo, ni siquiera hemos cubierto las sentencias on y event. Para más información, es posible que desee revisar {a=https://renpy.org/doc/html/atl.html}el capítulo ATL en el manual de referencias{/a}."
|
||||
|
||||
# game/tutorial_atl.rpy:684
|
||||
translate spanish transform_properties_391169cf:
|
||||
|
||||
# e "Ren'Py has quite a few transform properties that can be used with ATL, the Transform displayable, and the add Screen Language statement."
|
||||
e "Ren'Py tiene unas cuantas propiedades de transformación que se pueden usar con ATL, el visualizable Transform y la sentencia add Screen Language."
|
||||
|
||||
# game/tutorial_atl.rpy:685
|
||||
translate spanish transform_properties_fc895a1f:
|
||||
|
||||
# e "Here, we'll show them off so you can see them in action and get used to what each does."
|
||||
e "Aquí, los mostraremos para que puedas verlos en acción y acostumbrarte a lo que hace cada uno."
|
||||
|
||||
# game/tutorial_atl.rpy:701
|
||||
translate spanish transform_properties_88daf990:
|
||||
|
||||
# e "First off, all of the position properties are also transform properties. These include the pos, anchor, align, center, and offset properties."
|
||||
e "En primer lugar, todas las propiedades de posición también son propiedades de transformación. Estos incluyen las propiedades pos, anchor, align, center y offset."
|
||||
|
||||
# game/tutorial_atl.rpy:719
|
||||
translate spanish transform_properties_d7a487f1:
|
||||
|
||||
# e "The position properties can also be used to pan over a displayable larger than the screen, by giving xpos and ypos negative values."
|
||||
e "Las propiedades de posición también se pueden usar para desplazarse por una pantalla más grande que la pantalla, dando valores negativos a xpos y ypos."
|
||||
|
||||
# game/tutorial_atl.rpy:729
|
||||
translate spanish transform_properties_89e0d7c2:
|
||||
|
||||
# "The subpixel property controls how things are lined up with the screen. When False, images can be pixel-perfect, but there can be pixel jumping."
|
||||
"La propiedad de subpíxele controla cómo se alinean las cosas con la pantalla. Cuando es False, las imágenes pueden ser perfectas en píxeles, pero puede haber saltos de píxeles."
|
||||
|
||||
# game/tutorial_atl.rpy:736
|
||||
translate spanish transform_properties_4194527e:
|
||||
|
||||
# "When it's set to True, movement is smoother at the cost of blurring images a little."
|
||||
"Cuando se establece en True, el movimiento es más suave a costa de desenfocar un poco las imágenes."
|
||||
|
||||
# game/tutorial_atl.rpy:755
|
||||
translate spanish transform_properties_35934e77:
|
||||
|
||||
# e "Transforms also support polar coordinates. The around property sets the center of the coordinate system to coordinates given in pixels."
|
||||
e "Las transformaciones también soportan coordenadas polares. La propiedad around establece el centro del sistema de coordenadas en coordenadas dadas en píxeles."
|
||||
|
||||
# game/tutorial_atl.rpy:763
|
||||
translate spanish transform_properties_605ebd0c:
|
||||
|
||||
# e "The angle property gives the angle in degrees. Angles run clockwise, with the zero angle at the top of the screen."
|
||||
e "La propiedad de angle da el ángulo en grados. Los ángulos se ejecutan en el sentido de las agujas del reloj, con el ángulo cero en la parte superior de la pantalla."
|
||||
|
||||
# game/tutorial_atl.rpy:772
|
||||
translate spanish transform_properties_6d4555ed:
|
||||
|
||||
# e "The radius property gives the distance in pixels from the anchor of the displayable to the center of the coordinate system."
|
||||
e "La propiedad de radius proporciona la distancia en píxeles desde el anchor del visualizable hasta el centro del sistema de coordenadas."
|
||||
|
||||
# game/tutorial_atl.rpy:786
|
||||
translate spanish transform_properties_7af037a5:
|
||||
|
||||
# e "There are several ways to resize a displayable. The zoom property lets us scale a displayable by a factor, making it bigger and smaller."
|
||||
e "Hay varias formas de cambiar el tamaño de un visuzlizable. La propiedad de zoom nos permite escalar un valor visualizable, haciéndolo más grande y más pequeño."
|
||||
|
||||
# game/tutorial_atl.rpy:799
|
||||
translate spanish transform_properties_b6527546:
|
||||
|
||||
# e "The xzoom and yzoom properties allow the displayable to be scaled in the X and Y directions independently."
|
||||
e "Las propiedades xzoom y yzoom permiten escalar lo visualizable en las direcciones X e Y de forma independiente."
|
||||
|
||||
# game/tutorial_atl.rpy:809
|
||||
translate spanish transform_properties_b98b780b:
|
||||
|
||||
# e "By making xzoom or yzoom a negative number, we can flip the image horizontally or vertically."
|
||||
e "Al hacer que xzoom o yzoom sean un número negativo, podemos voltear la imagen horizontal o verticalmente."
|
||||
|
||||
# game/tutorial_atl.rpy:819
|
||||
translate spanish transform_properties_74d542ff:
|
||||
|
||||
# e "Instead of zooming by a scale factor, the size transform property can be used to scale a displayable to a size in pixels."
|
||||
e "En lugar de hacer zoom en un factor de escala, la propiedad de transformación de tamaño se puede usar para escalar un tamaño que se pueda mostrar a un tamaño en píxeles."
|
||||
|
||||
# game/tutorial_atl.rpy:834
|
||||
translate spanish transform_properties_438ed776:
|
||||
|
||||
# e "The alpha property is used to change the opacity of a displayable. This can make it appear and disappear."
|
||||
e "La propiedad alpha se utiliza para cambiar la opacidad de un visualizable. Esto puede hacer que aparezca y desaparezca "
|
||||
|
||||
# game/tutorial_atl.rpy:847
|
||||
translate spanish transform_properties_aee19f86:
|
||||
|
||||
# e "The rotate property rotates a displayable."
|
||||
e "La propiedad rotate gira un visualizable."
|
||||
|
||||
# game/tutorial_atl.rpy:858
|
||||
translate spanish transform_properties_57b3235a:
|
||||
|
||||
# e "By default, when a displayable is rotated, Ren'Py will include extra space on all four sides, so the size doesn't change as it rotates. Here, you can see the extra space on the left and top, and it's also there on the right and bottom."
|
||||
e "Por defecto, cuando se gira un visualizable, Ren'Py incluirá espacio adicional en los cuatro lados, por lo que el tamaño no cambia a medida que gira. Aquí, puedes ver el espacio adicional a la izquierda y arriba, y también está a la derecha y abajo."
|
||||
|
||||
# game/tutorial_atl.rpy:870
|
||||
translate spanish transform_properties_66d29ee8:
|
||||
|
||||
# e "By setting rotate_pad to False, we can get rid of the space, at the cost of the size of the displayable changing as it rotates."
|
||||
e "Al establecer rotate_pad en False, podemos deshacernos del espacio, a costa del tamaño del cambio visualizable a medida que gira."
|
||||
|
||||
# game/tutorial_atl.rpy:881
|
||||
translate spanish transform_properties_7f32e8ad:
|
||||
|
||||
# e "The tile transform properties, xtile and ytile, repeat the displayable multiple times."
|
||||
e "Las propiedades de transformación tile, xtile y ytile, repiten multiples veces el visualizable."
|
||||
|
||||
# game/tutorial_atl.rpy:891
|
||||
translate spanish transform_properties_207b7fc8:
|
||||
|
||||
# e "The crop property crops a rectangle out of a displayable, showing only part of it."
|
||||
e "La propiedad crop recorta un rectángulo de un objeto visualizable, mostrando solo una parte de él."
|
||||
|
||||
# game/tutorial_atl.rpy:905
|
||||
translate spanish transform_properties_e7e22d28:
|
||||
|
||||
# e "When used together, crop and size can be used to focus in on specific parts of an image."
|
||||
e "Cuando se usan juntos, crop y size se pueden usar para enfocar en partes específicas de una imagen."
|
||||
|
||||
# game/tutorial_atl.rpy:917
|
||||
translate spanish transform_properties_f34abd82:
|
||||
|
||||
# e "The xpan and ypan properties can be used to pan over a displayable, given an angle in degrees, with 0 being the center."
|
||||
e "Las propiedades xpan e ypan se pueden usar para desplazarse sobre un visualizable, dado un ángulo en grados, siendo 0 el centro."
|
||||
|
||||
# game/tutorial_atl.rpy:924
|
||||
translate spanish transform_properties_bfa3b139:
|
||||
|
||||
# e "Those are all the transform properties we have to work with. By putting them together in the right order, you can create complex things."
|
||||
e "Esas son todas las propiedades de transformación con las que tenemos que trabajar. Al juntarlos en el orden correcto, puedes crear cosas complejas."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# tutorial_atl.rpy:267
|
||||
old "xpos 1.0 ypos .5"
|
||||
new "xpos 1.0 ypos .5"
|
||||
|
||||
# tutorial_atl.rpy:267
|
||||
old "xpos .75 ypos .25"
|
||||
new "xpos .75 ypos .25"
|
||||
|
||||
# tutorial_atl.rpy:267
|
||||
old "xpos .25 ypos .33"
|
||||
new "xpos .25 ypos .33"
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
|
||||
# game/tutorial_director.rpy:5
|
||||
translate spanish director_e4543d9b:
|
||||
|
||||
# e "There are a few tools you can access by pressing the right commands on the keyboard."
|
||||
e "Hay algunas herramientas a las que puede acceder presionando los comandos correctos en el teclado."
|
||||
|
||||
# game/tutorial_director.rpy:7
|
||||
translate spanish director_ebf40500:
|
||||
|
||||
# e "Typing Shift+R turns on autoreload mode. When it's enabled, your game will automatically reload when you edit a script file."
|
||||
e "Al escribir Shift + R se activa el modo de carga automática. Cuando está habilitado, tu juego se volverá a cargar automáticamente cuando edites un archivo de script."
|
||||
|
||||
# game/tutorial_director.rpy:9
|
||||
translate spanish director_6f3d1bea:
|
||||
|
||||
# e "Shift+O brings you to the console, which lets you enter Ren'Py and Python commands to try them out."
|
||||
e "Shift + O te lleva a la consola, que te permite ingresar los comandos Ren'Py y Python para probarlos."
|
||||
|
||||
# game/tutorial_director.rpy:11
|
||||
translate spanish director_70a61c1c:
|
||||
|
||||
# e "Shift+D pops up a developer menu with access to these and other functions."
|
||||
e "Shift + D muestra un menú de desarrollador con acceso a estas y otras funciones."
|
||||
|
||||
# game/tutorial_director.rpy:13
|
||||
translate spanish director_43504744:
|
||||
|
||||
# e "The most powerful tool is the interactive director that lets you add images, music, and voice lines to your game from inside Ren'Py."
|
||||
e "La herramienta más poderosa es el director interactivo que te permite agregar imágenes, música y líneas de voz a tu juego desde dentro de Ren'Py."
|
||||
|
||||
# game/tutorial_director.rpy:15
|
||||
translate spanish director_32f8695e:
|
||||
|
||||
# e "The idea is that you can use an editor to write the script and logic of your visual novel, and then interactively add images in the right places."
|
||||
e "La idea es que puedas usar el editor para escribir el script y la lógica de su novela visual y luego agregar imágenes de manera interactiva en los lugares correctos."
|
||||
|
||||
# game/tutorial_director.rpy:21
|
||||
translate spanish director_62734181:
|
||||
|
||||
# e "It looks like Ren'Py is installed read-only on your system, so you won't be able to try out the interactive director now."
|
||||
e "Parece que Ren'Py está instalado solo para lectura en tu sistema, por lo que no podrás probar el director interactivo ahora."
|
||||
|
||||
# game/tutorial_director.rpy:23
|
||||
translate spanish director_aec4c7d4:
|
||||
|
||||
# e "You'll need to make your own project, and try it out there. But I can tell you how to use it."
|
||||
e "Tendrás que hacer tu propio proyecto y probarlo allí. Pero te puedo decir cómo usarlo."
|
||||
|
||||
# game/tutorial_director.rpy:29
|
||||
translate spanish director_453d4d67:
|
||||
|
||||
# e "You can try the interactive director out right now, by using it to change this tutorial game."
|
||||
e "Puedes probar el director interactivo ahora mismo, usándolo para cambiar este juego tutorial."
|
||||
|
||||
# game/tutorial_director.rpy:31
|
||||
translate spanish director_c35284d1:
|
||||
|
||||
# e "Be sure to click my dialogue at the bottom of the screen to advance the tutorial."
|
||||
e "Asegúrate de hacer clic en mi diálogo en la parte inferior de la pantalla para avanzar el tutorial."
|
||||
|
||||
# game/tutorial_director.rpy:33
|
||||
translate spanish director_e253e03b:
|
||||
|
||||
# e "If something goes wrong, don't worry. Quitting and restarting this tutorial will remove your changes and bring everything back to normal."
|
||||
e "Si algo sale mal, no te preocupes. Si abandonas y reinicias este tutorial, se eliminarán los cambios y todo volverá a la normalidad."
|
||||
|
||||
# game/tutorial_director.rpy:42
|
||||
translate spanish director_1cd735bc:
|
||||
|
||||
# e "To get started, let's go back to a blank slate, with no images on the screen."
|
||||
e "Para comenzar, volvamos a una pizarra en blanco, sin imágenes en la pantalla."
|
||||
|
||||
# game/tutorial_director.rpy:44
|
||||
translate spanish director_c7a18979:
|
||||
|
||||
# e "You can show the director at any time by pressing the 'D' key on your keyboard. Ren'Py will reload, and you'll come back here. Try it now."
|
||||
e "Puedes mostrar al director en cualquier momento presionando la tecla 'D' en tu teclado. Ren'Py se recargará, y volverás aquí. Pruebalo ahora."
|
||||
|
||||
# game/tutorial_director.rpy:46
|
||||
translate spanish director_3dcc4362:
|
||||
|
||||
# e "Let's add a background. Click the '+' to pick where to add it, then the 'scene' statement and 'washington' for the image. Finally, click 'Add' to add it."
|
||||
scene bg washington
|
||||
|
||||
e "Vamos a añadir un fondo. Haz clic en '+' para elegir dónde agregarlo, luego la sentencia 'scene' y 'washington' para la imagen. Finalmente, haga clic en 'Añadir' para agregarlo."
|
||||
|
||||
# game/tutorial_director.rpy:48
|
||||
translate spanish director_292d58b5:
|
||||
|
||||
# e "Next, add a sprite. Click '+', then 'show', 'eileen', 'happy', and 'Add'. Once you've added it, dissolve it in by clicking the second '+', then 'with', 'dissolve', and 'Add'."
|
||||
show eileen happy
|
||||
|
||||
e "A continuación, agregue un sprite. Haz clic en '+', luego en 'show', 'eileen', 'happy' y 'Añadir'. Una vez que lo haya agregado, disuélvalo haciendo clic en el segundo '+', luego en 'whit', 'dissolve' y 'Añadir'."
|
||||
|
||||
# game/tutorial_director.rpy:52
|
||||
translate spanish director_c875c1a7:
|
||||
|
||||
# e "You can edit or remove statements with the pencil icon. You can move me to the right by editing the show statement, then clicking '(transform)', 'right', and 'Change'."
|
||||
e "Puede editar o eliminar sentencias con el icono de lápiz. Puede moverme a la derecha editando la sentencia del programa, luego haciendo clic en '(transform)', 'right' y 'Cambiar'."
|
||||
|
||||
# game/tutorial_director.rpy:54
|
||||
translate spanish director_4e04a74e:
|
||||
|
||||
# e "Finally, you can use the play, queue, stop, and voice statements to manage audio. Try adding 'play', 'music', 'sunflower-slow-drag.ogg'."
|
||||
play music 'sunflower-slow-drag.ogg'
|
||||
|
||||
e "Finalmente, puede usar las instrucciones de play, queue, stop y voice para administrar el audio. Intente agregar 'play', 'music', 'sunflower-slow-drag.ogg'."
|
||||
|
||||
# game/tutorial_director.rpy:61
|
||||
translate spanish director_1364b336:
|
||||
|
||||
# l "Finally, I get some more screen time!"
|
||||
l "Finalmente, tengo un poco más de tiempo de pantalla!"
|
||||
|
||||
# game/tutorial_director.rpy:69
|
||||
translate spanish director_c6dd0c81:
|
||||
|
||||
# e "The changes you make with the director are permanent. They're saved to the script, and you can rollback or repeat this section to see them."
|
||||
e "Los cambios que hagas con el director son permanentes. Se guardan en la secuencia de comandos y puede retroceder o repetir esta sección para verlos."
|
||||
|
||||
# game/tutorial_director.rpy:71
|
||||
translate spanish director_9d03b14b:
|
||||
|
||||
# e "However, we reset this tutorial when the game restarts, so you can try again from a clean slate. That won't happen with your own visual novel."
|
||||
e "Sin embargo, restablecemos este tutorial cuando se reinicia el juego, para que puedas volver a intentarlo desde una pizarra limpia. Eso no sucederá con tu propia novela visual."
|
||||
|
||||
# game/tutorial_director.rpy:73
|
||||
translate spanish director_dbfa07b2:
|
||||
|
||||
# e "I hope these tools make developing your visual novel that much easier."
|
||||
e "Espero que estas herramientas hagan que el desarrollo de su novela visual sea mucho más fácil."
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
# game/tutorial_distribute.rpy:3
|
||||
translate spanish distribute_7db9b042:
|
||||
|
||||
# e "One thing Ren'Py makes easy is building distributions of your visual novel so you can give it to players."
|
||||
e "Una cosa que Ren'Py hace fácil es crear distribuciones de tu novela visual para que puedas dárselas a los jugadores."
|
||||
|
||||
# game/tutorial_distribute.rpy:5
|
||||
translate spanish distribute_d373903b:
|
||||
|
||||
# e "Before you build distributions, you should use the Lint command to check your game for problems."
|
||||
e "Antes de crear distribuciones, debes usar el comando Lint para verificar si tu juego tiene problemas."
|
||||
|
||||
# game/tutorial_distribute.rpy:7
|
||||
translate spanish distribute_2f970565:
|
||||
|
||||
# e "While not every potential problem lint reports is a real issue, they generally are, and you should try to understand what might be wrong."
|
||||
e "Si bien no todos los informes de posibles problemas de lint son un verdadero problema, generalmente lo son, debes tratar de entender qué puede estar mal."
|
||||
|
||||
# game/tutorial_distribute.rpy:12
|
||||
translate spanish distribute_29aea017:
|
||||
|
||||
# e "After lint has finished, you can choose Build Distributions to build the Windows, Linux, and Mac distributions of your game."
|
||||
e "Después de que la lint haya terminado, puedes elegir Construir Distribuciones para construir las distribuciones de Windows, Linux y Mac de tu juego."
|
||||
|
||||
# game/tutorial_distribute.rpy:14
|
||||
translate spanish distribute_821be97b:
|
||||
|
||||
# e "This can be as simple as clicking the Build button, when you're not on a Mac."
|
||||
e "Esto puede ser tan simple como hacer clic en el botón Construir, cuando no estás en una Mac."
|
||||
|
||||
# game/tutorial_distribute.rpy:16
|
||||
translate spanish distribute_638f964a:
|
||||
|
||||
# e "If you are on a Macintosh, you can have Ren'Py sign the Mac application, which makes it easier for players to run. To enable this, you need to set build.mac_identity in options.rpy."
|
||||
e "Si estás usando una Macintosh, puedes hacer que Ren'Py firme la aplicación Mac, lo que facilita la ejecución de los jugadores. Para habilitar esto, necesita configurar build.mac_identity en options.rpy."
|
||||
|
||||
# game/tutorial_distribute.rpy:21
|
||||
translate spanish distribute_dd1af4dd:
|
||||
|
||||
# e "Ren'Py supports the mobile platforms, Android and iOS. We also support ChromeOS, through its ability to run Android apps."
|
||||
e "Ren'Py es compatible con las plataformas móviles, Android y iOS. También soportamos ChromeOS, a través de su capacidad para ejecutar aplicaciones de Android."
|
||||
|
||||
# game/tutorial_distribute.rpy:23
|
||||
translate spanish distribute_0b547b7b:
|
||||
|
||||
# e "These mobile platforms can be a bit more complicated. While Android apps can be built everywhere, iOS requires a Mac."
|
||||
e "Estas plataformas móviles pueden ser un poco más complicadas. Si bien las aplicaciones de Android se pueden construir en cualquier lugar, iOS requiere una Mac."
|
||||
|
||||
# game/tutorial_distribute.rpy:25
|
||||
translate spanish distribute_50a57bcf:
|
||||
|
||||
# e "Mobile platforms might also require you to change your visual novel a little, due to the smaller limited devices. For example, buttons need to be made large enough for a person to touch."
|
||||
e "Las plataformas móviles también pueden requerir que cambies un poco tu novela visual, debido a los pequeños dispositivos limitados. Por ejemplo, los botones deben ser lo suficientemente grandes para que una persona los toque."
|
||||
|
||||
# game/tutorial_distribute.rpy:27
|
||||
translate spanish distribute_a9a2149f:
|
||||
|
||||
# e "Rather than cover mobile here, I'll point you to the {a=https://www.renpy.org/doc/html/android.html}Android{/a} and {a=https://www.renpy.org/doc/html/ios.html}iOS{/a} documentation, where you can read more."
|
||||
e "En lugar de cubrir móviles aquí, te indicaré la documentación de {a=https://www.renpy.org/doc/html/android.html}Android{/a} y {a=https://www.renpy.org/doc/html/ios.html}iOS{/a}, donde puedes leer más."
|
||||
|
||||
# game/tutorial_distribute.rpy:29
|
||||
translate spanish distribute_f1cbc9d0:
|
||||
|
||||
# e "Thanks to the distribution tools Ren'Py ships with, there are thousands of visual novels available."
|
||||
e "Gracias a las herramientas de distribución con las que Ren'Py se envía, hay miles de novelas visuales disponibles."
|
||||
|
||||
# game/tutorial_distribute.rpy:33
|
||||
translate spanish distribute_500b3e7f:
|
||||
|
||||
# e "I hope that soon, yours will be one of them!"
|
||||
e "Espero que pronto, la tuya sea una de ellas!"
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
|
||||
# game/tutorial_nvlmode.rpy:17
|
||||
translate spanish tutorial_nvlmode_76b2fe88:
|
||||
|
||||
# nvl clear
|
||||
nvl clear
|
||||
|
||||
# game/tutorial_nvlmode.rpy:20
|
||||
translate spanish tutorial_nvlmode_ac125210:
|
||||
|
||||
# nvle "NVL-style games are games that cover the full screen with text, rather then placing it in a window at the bottom of the screen. Like this."
|
||||
nvle "Los juegos estilo NVL son juegos que cubren la pantalla completa con texto, en lugar de colocarlos en una ventana en la parte inferior de la pantalla. Como esto."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:24
|
||||
translate spanish tutorial_nvlmode_e7030787:
|
||||
|
||||
# nvle "To use NVL-mode, you need to define Characters with a kind=nvl."
|
||||
nvle "Para usar el modo NVL, debes definir los Characters con kind=nvl."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:28
|
||||
translate spanish tutorial_nvlmode_c9a35125:
|
||||
|
||||
# nvle "Then just use that character in a say statement."
|
||||
nvle "Luego solo usa ese personaje en una sentencia say."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:30
|
||||
translate spanish tutorial_nvlmode_130610c2:
|
||||
|
||||
# nvl clear
|
||||
# nvle "You use 'nvl clear' to clear the screen when that becomes necessary."
|
||||
nvl clear
|
||||
nvle "Utiliza 'nvl clear' para borrar la pantalla cuando sea necesario."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:37
|
||||
translate spanish tutorial_nvlmode_390a4eb1:
|
||||
|
||||
# nvle "The 'nvl show' and 'nvl hide' statements use transitions to show and hide the NVL window."
|
||||
nvle "Las sentencias 'nvl show' y 'nvl hide' usan transiciones para mostrar y ocultar la ventana NVL."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:48
|
||||
translate spanish tutorial_nvlmode_05956e33:
|
||||
|
||||
# nvle "NVL-mode also supports showing menus to the player, providing it's the last thing on the screen. Understand?" nointeract
|
||||
nvle "El modo NVL también admite mostrar menús al juagador, siempre que sea lo último en la pantalla. ¿Entendido?" nointeract
|
||||
|
||||
# game/tutorial_nvlmode.rpy:54
|
||||
translate spanish tutorial_nvlmode_0f2b7d59:
|
||||
|
||||
# nvl clear
|
||||
# nvle "Good!"
|
||||
nvl clear
|
||||
nvle "!Bien¡"
|
||||
|
||||
# game/tutorial_nvlmode.rpy:60
|
||||
translate spanish tutorial_nvlmode_f3a79c09:
|
||||
|
||||
# nvl clear
|
||||
# nvle "Well, hopefully the code below makes it a little more clear."
|
||||
nvl clear
|
||||
nvle "Bueno, espero que el siguiente código lo haga un poco más claro."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:69
|
||||
translate spanish after_nvl_menu_cb560cd2:
|
||||
|
||||
# nvle "Games can mix NVL-mode and the normal ADV-mode by having some characters that have kind=nvl, and some that do not."
|
||||
nvle "Los juegos pueden mezclar el modo NVL y el modo ADV normal al tener algunos personajes que tienen kind=nvl y otros que no."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:71
|
||||
translate spanish after_nvl_menu_10a6e85a:
|
||||
|
||||
# e "You can specify transitions that occur when going from NVL-mode to ADV-mode."
|
||||
e "Puede especificar las transiciones que ocurren cuando se pasa del modo NVL al modo ADV."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:73
|
||||
translate spanish after_nvl_menu_d43b28d1:
|
||||
|
||||
# nvle "As well as when going from ADV-mode to NVL-mode."
|
||||
nvle "Así como cuando se pasa del modo ADV al modo NVL."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:75
|
||||
translate spanish after_nvl_menu_f056c7ad:
|
||||
|
||||
# nvle "Text tags like {{w}{w} work in NVL-mode."
|
||||
nvle "Las etiquetas de texto como {{w}{w} funcionan en modo NVL."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:77
|
||||
translate spanish after_nvl_menu_750cd9a1:
|
||||
|
||||
# extend " As does the \"extend\" special character."
|
||||
extend " Al igual que el personaje especial \"extend\"."
|
||||
|
||||
# game/tutorial_nvlmode.rpy:79
|
||||
translate spanish after_nvl_menu_146d840b:
|
||||
|
||||
# nvle "And that's it for NVL-mode."
|
||||
nvle "Y eso es todo del modo NVL."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# tutorial_nvlmode.rpy:48
|
||||
old "Yes."
|
||||
new "Sí"
|
||||
|
||||
# tutorial_nvlmode.rpy:48
|
||||
old "No."
|
||||
new "No"
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
|
||||
# game/tutorial_playing.rpy:11
|
||||
translate spanish tutorial_playing_2985ab86:
|
||||
|
||||
# e "As someone who has played more than a few visual novels, there are many features that I expect all games to have."
|
||||
e "Como alguien que ha jugado más que pocas novelas visuales, hay muchas características que espero que tengan todos los juegos."
|
||||
|
||||
# game/tutorial_playing.rpy:13
|
||||
translate spanish tutorial_playing_ca4769bb:
|
||||
|
||||
# e "Features like saving, loading, changing preferences, and so on."
|
||||
e "Características como guardar, cargar, cambiar preferencias, etc."
|
||||
|
||||
# game/tutorial_playing.rpy:15
|
||||
translate spanish tutorial_playing_f30f1979:
|
||||
|
||||
# e "One of the nice things about Ren'Py is that the engine provides many of these features for you. You can spend your time creating your game, and let us provide these things."
|
||||
e "Una de las cosas buenas de Ren'Py es que el motor proporciona muchas de estas funciones para ti. Puedes dedicar tu tiempo a crear tu juego y permítenos proporcionarte estas cosas."
|
||||
|
||||
# game/tutorial_playing.rpy:17
|
||||
translate spanish tutorial_playing_afa743e7:
|
||||
|
||||
# e "While you're in the game, you can access the game menu by right clicking or hitting the escape key."
|
||||
e "Mientras estás en el juego, puedes acceder al menú del juego haciendo clic derecho o presionando la tecla de escape."
|
||||
|
||||
# game/tutorial_playing.rpy:19
|
||||
translate spanish tutorial_playing_1a6c8296:
|
||||
|
||||
# e "You can also access the game menu through some of the quick menu buttons at the bottom of this screen."
|
||||
e "También puedes acceder al menú del juego a través de algunos de los botones del menú rápido en la parte inferior de esta pantalla."
|
||||
|
||||
# game/tutorial_playing.rpy:25
|
||||
translate spanish tutorial_playing_8360224a:
|
||||
|
||||
# e "When you first enter the game menu, you'll see the save screen. Clicking on a numbered slot will save the game."
|
||||
e "Cuando entras por primera vez en el menú del juego, verás la pantalla de guardar. Al hacer clic en una ranura numerada se guardará el juego."
|
||||
|
||||
# game/tutorial_playing.rpy:27
|
||||
translate spanish tutorial_playing_edea14ff:
|
||||
|
||||
# e "Unlike other engines, Ren'Py doesn't limit the number of save slots that you can use. You can keep hitting next until you reach the page you want."
|
||||
e "A diferencia de otros motores, Ren'Py no limita el número de ranuras de guardado que puedes usar. Puedes seguir presionando siguiente hasta que llegues a la página que deseas."
|
||||
|
||||
# game/tutorial_playing.rpy:29
|
||||
translate spanish tutorial_playing_900ce396:
|
||||
|
||||
# e "Clicking on the title of the page allows you to start typing to change the page name."
|
||||
e "Al hacer clic en el título de la página, puedes comenzar a escribir para cambiar el nombre de la página."
|
||||
|
||||
# game/tutorial_playing.rpy:31
|
||||
translate spanish tutorial_playing_fea05c6b:
|
||||
|
||||
# e "The load screen looks quite similar to the save screen, and lets you load a game from a save slot."
|
||||
e "La pantalla de cargar parece bastante similar a la pantalla de guardar, y te permite cargar un juego desde una ranura de guardado."
|
||||
|
||||
# game/tutorial_playing.rpy:33
|
||||
translate spanish tutorial_playing_8e7e83a8:
|
||||
|
||||
# e "It also lets you load one of the auto-saves that Ren'Py makes for you."
|
||||
e "También te permite cargar uno de los guardados automáticos que Ren'Py hace por ti."
|
||||
|
||||
# game/tutorial_playing.rpy:38
|
||||
translate spanish tutorial_playing_4b21f071:
|
||||
|
||||
# e "The game menu also has the preferences screen."
|
||||
e "El menú del juego también tiene la pantalla de preferencias."
|
||||
|
||||
# game/tutorial_playing.rpy:40
|
||||
translate spanish tutorial_playing_eaac8ba9:
|
||||
|
||||
# e "This screen lets you decide how Ren'Py displays, pick what Ren'Py skips, control text speed and auto-click speed, and adjust sound, music, and voice volumes."
|
||||
e "Esta pantalla te permite decidir cómo se muestra Ren'Py, elegir qué salta Ren'Py, controlar la velocidad del texto y la velocidad de clic automático, y ajustar el volumen de sonido, música y voz."
|
||||
|
||||
# game/tutorial_playing.rpy:42
|
||||
translate spanish tutorial_playing_b1562a34:
|
||||
|
||||
# e "The game menu also lets you end the game and return to the main menu, or quit Ren'Py entirely."
|
||||
e "El menú del juego también te permite finalizar el juego y volver al menú principal, o abandonar Ren'Py por completo."
|
||||
|
||||
# game/tutorial_playing.rpy:47
|
||||
translate spanish tutorial_playing_790f9dc7:
|
||||
|
||||
# e "While the default game menus look a bit generic, with a little work they can be customized or even entirely replaced, allowing you to create menus as unique as your game."
|
||||
e "Si bien los menús predeterminados del juego parecen un poco genéricos, con un poco de trabajo pueden personalizarse o incluso reemplazarse por completo, lo que te permite crear menús tan únicos como tu juego."
|
||||
|
||||
# game/tutorial_playing.rpy:53
|
||||
translate spanish tutorial_playing_bc29822e:
|
||||
|
||||
# e "While inside the game, there are a few more things you can do."
|
||||
e "Mientras estés dentro del juego, hay algunas cosas más que puedes hacer."
|
||||
|
||||
# game/tutorial_playing.rpy:55
|
||||
translate spanish tutorial_playing_dc0f9cf7:
|
||||
|
||||
# e "When I'm liking a visual novel, I want to see all the endings. Ren'Py's skip function lets me easily do this, by skipping text that I've already seen."
|
||||
e "Cuando me gusta una novela visual, quiero ver todos los finales. La función de salto de Ren'Py me permite hacer esto fácilmente, saltándose el texto que ya he visto."
|
||||
|
||||
# game/tutorial_playing.rpy:57
|
||||
translate spanish tutorial_playing_93f7b8f9:
|
||||
|
||||
# e "I can skip a few lines by holding down Control, or I can toggle skip mode by clicking the skip button at the bottom of the screen."
|
||||
e "Puedo saltar algunas líneas manteniendo presionado Control, o puedo alternar el modo de salto haciendo clic en el botón saltar en la parte inferior de la pantalla."
|
||||
|
||||
# game/tutorial_playing.rpy:59
|
||||
translate spanish tutorial_playing_d3553fbe:
|
||||
|
||||
# e "By default, we only skip read text, so this won't do anything the first time through the game."
|
||||
e "De forma predeterminada, solo salta el texto leído, por lo que esto no hará nada la primera vez en el juego."
|
||||
|
||||
# game/tutorial_playing.rpy:61
|
||||
translate spanish tutorial_playing_fc0cac03:
|
||||
|
||||
# e "Clicking the auto button toggles auto-forward mode, which makes the game advance without you clicking."
|
||||
e "Al hacer clic en el botón auto, se alterna el modo de avance automático, lo que hace que el juego avance sin que usted haga clic."
|
||||
|
||||
# game/tutorial_playing.rpy:63
|
||||
translate spanish tutorial_playing_14e1c854:
|
||||
|
||||
# e "The Q.Save and Q.Load buttons provide a single-click way to make a save, and a fast way to load that save again."
|
||||
e "Los botones Guardar R. y Cargar R. proporcionan una forma de hacer un solo clic para guardar, y una forma rápida de cargar ese guardado nuevamente."
|
||||
|
||||
# game/tutorial_playing.rpy:65
|
||||
translate spanish tutorial_playing_5d6e4c0f:
|
||||
|
||||
# e "Pressing the 's' key saves a screenshot to disk, so I can upload pictures of the game to websites like {a=https://www.renpy.org}renpy.org{/a}."
|
||||
e "Al presionar la tecla 's' se guarda una captura de pantalla en el disco, así puedo cargar fotos del juego en sitios web como {a=https://www.renpy.org}renpy.org{/a}."
|
||||
|
||||
# game/tutorial_playing.rpy:67
|
||||
translate spanish tutorial_playing_73f3cfec:
|
||||
|
||||
# e "The history button displays a history of read text - but you can also use rollback, which is usually better."
|
||||
e "El botón de historial muestra un historial de lectura de texto, pero también puedes usar retoceso, que generalmente es mejor."
|
||||
|
||||
# game/tutorial_playing.rpy:69
|
||||
translate spanish tutorial_playing_f065a34c:
|
||||
|
||||
# e "Would you like to hear about rollback?" nointeract
|
||||
e "¿Te gustaría saber acerca de el retoceso?" nointeract
|
||||
|
||||
# game/tutorial_playing.rpy:84
|
||||
translate spanish tutorial_rollback_a520091b:
|
||||
|
||||
# e "You can invoke a rollback by clicking the 'Back' button, scrolling the mouse wheel up, or by pushing the page up key. That'll bring you back to the previous screen."
|
||||
e "Puedes invocar un retoceso haciendo clic en el botón 'Atrás', desplazando la rueda del mouse hacia arriba o presionando la tecla de regresar página. Eso te llevará de vuelta a la pantalla anterior."
|
||||
|
||||
# game/tutorial_playing.rpy:86
|
||||
translate spanish tutorial_rollback_041be71b:
|
||||
|
||||
# e "While at a previous screen, you can roll forward by scrolling the mouse wheel down, or pushing the page down key."
|
||||
e "Mientras se encuentra en una pantalla anterior, puedes avanzar desplazando la rueda del mouse hacia abajo o presionando la tecla de avansar página."
|
||||
|
||||
# game/tutorial_playing.rpy:88
|
||||
translate spanish tutorial_rollback_4b903465:
|
||||
|
||||
# e "Rolling forward through a menu will make the same choice you did last time. But you don't have to do that - Ren'Py's rollback system allows you to make a different choice."
|
||||
e "Al avanzar por un menú, se tomará la misma decisión que la última vez. Pero no tienes que hacer eso, el sistema de retoceso de Ren'Py te permite hacer una elección diferente."
|
||||
|
||||
# game/tutorial_playing.rpy:90
|
||||
translate spanish tutorial_rollback_a4633f53:
|
||||
|
||||
# e "You can try it by rolling back through the last menu, and saying 'No'."
|
||||
e "Puedes intentarlo retrocediendo hasta el último menú y diciendo 'No'."
|
||||
|
||||
# game/tutorial_playing.rpy:92
|
||||
translate spanish tutorial_rollback_5b73f822:
|
||||
|
||||
# e "Click back a few times, press page up, or scroll up the mouse wheel."
|
||||
e "Haz clic hacia atrás unas cuantas veces, presiona la página arriba o desplasa la rueda del mouse hacia arriba."
|
||||
|
||||
# game/tutorial_playing.rpy:96
|
||||
translate spanish tutorial_rollback_de0b6f5a:
|
||||
|
||||
# e "Well, are you going to try it?"
|
||||
e "Bueno, ¿vas a intentarlo?"
|
||||
|
||||
# game/tutorial_playing.rpy:98
|
||||
translate spanish tutorial_rollback_6bbdedaa:
|
||||
|
||||
# e "Your loss."
|
||||
e "Te lo pierdes"
|
||||
|
||||
# game/tutorial_playing.rpy:100
|
||||
translate spanish tutorial_rollback_dce979d4:
|
||||
|
||||
# e "Moving on."
|
||||
e "Continuemos"
|
||||
|
||||
# game/tutorial_playing.rpy:106
|
||||
translate spanish tutorial_rollback_done_6564cd32:
|
||||
|
||||
# e "By allowing Ren'Py to take care of out-of-game issues like loading and saving, you can focus on making your game, while still giving players the experience they've come to expect when playing visual novels."
|
||||
e "Al permitir que Ren'Py se encargue de los problemas fuera del juego, como cargar y guardar, puedes concentrarte en hacer tu juego, mientras sigue brindando a los jugadores la experiencia que esperan al jugar novelas visuales."
|
||||
|
||||
@@ -0,0 +1,863 @@
|
||||
|
||||
# game/tutorial_quickstart.rpy:28
|
||||
translate spanish tutorial_create_27048c11:
|
||||
|
||||
# e "When you're ready to use Ren'Py to create your visual novel, the first step is to create a new project."
|
||||
e "Cuando estés listo para usar Ren'Py para crear tu novela visual, el primer paso es crear un nuevo proyecto."
|
||||
|
||||
# game/tutorial_quickstart.rpy:30
|
||||
translate spanish tutorial_create_bae6289c:
|
||||
|
||||
# e "You can create a new project by clicking 'Create New Project' on the front screen of the launcher."
|
||||
e "Puede crear un nuevo proyecto haciendo clic en 'Crear Un Nuevo Proyecto' en la pantalla principal del launcher."
|
||||
|
||||
# game/tutorial_quickstart.rpy:32
|
||||
translate spanish tutorial_create_45915fcb:
|
||||
|
||||
# e "If this is your first time using Ren'Py, it'll ask you for the place you want to keep your projects. The best place is always somewhere that's frequently backed up."
|
||||
e "Si es la primera vez que usas Ren'Py, te pedirá el lugar donde deseas guardar tus proyectos. El mejor lugar es siempre un lugar que se respalda con frecuencia."
|
||||
|
||||
# game/tutorial_quickstart.rpy:36
|
||||
translate spanish tutorial_create_55e30cb5:
|
||||
|
||||
# e "After that, Ren'Py will ask for a name for your project. You'll have to stick to English letters and numbers, as zip files can't handle anything more than that."
|
||||
e "Después de eso, Ren'Py te pedirá un nombre para su proyecto. Tendrás que atenerte a las letras y números en inglés, ya que los archivos zip no pueden manejar nada más que eso."
|
||||
|
||||
# game/tutorial_quickstart.rpy:40
|
||||
translate spanish tutorial_create_dea3e5c2:
|
||||
|
||||
# e "The next thing Ren'Py will ask for is the resolution the visual novel will run at. This controls how large or small you'll have to make your game's artwork."
|
||||
e "Lo siguiente que Ren'Py pedirá es la resolución a la que se ejecutará la novela visual. Esto controla qué tan grande o pequeño tendrás que hacer las ilustraciones de tu juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:44
|
||||
translate spanish tutorial_create_3289ea75:
|
||||
|
||||
# e "Finally, Ren'Py will ask you to select a color scheme. You can change this after the game has been created, so just pick a color that's pleasing."
|
||||
e "Finalmente, Ren'Py te pedirá que seleccione una combinación de colores. Puedes cambiar esto después de que el juego haya sido creado, así que solo elige un color que sea agradable."
|
||||
|
||||
# game/tutorial_quickstart.rpy:48
|
||||
translate spanish tutorial_create_6b9e3b96:
|
||||
|
||||
# e "Once that's done, Ren'Py will work for a bit and return you to the main menu with the new project selected. Now, when you click Launch, Ren'Py will start your new game."
|
||||
e "Una vez hecho esto, Ren'Py trabajará un poco y volverá al menú principal con el nuevo proyecto seleccionado. Ahora, cuando haces clic en Ejecutar, Ren'Py comenzará tu nuevo juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:50
|
||||
translate spanish tutorial_create_bdf94f9b:
|
||||
|
||||
# e "To get back here, you can choose 'Tutorial' to switch to this tutorial game."
|
||||
e "Para volver aquí, puedes elegir 'Tutorial' para cambiar a este juego tutorial."
|
||||
|
||||
# game/tutorial_quickstart.rpy:52
|
||||
translate spanish tutorial_create_22f516df:
|
||||
|
||||
# e "You'll also need to edit the games script to make changes. To do that, click 'script.rpy' on the front page of the launcher."
|
||||
e "También necesitarás editar el script de juegos para hacer cambios. Para hacer eso, haga clic en 'script.rpy' en la página principal del lanzador."
|
||||
|
||||
# game/tutorial_quickstart.rpy:54
|
||||
translate spanish tutorial_create_18cd1d9d:
|
||||
|
||||
# e "If it's your first time doing so, Ren'Py will ask you to select a text editor. Editra might be a safe choice, but read the descriptions to be sure."
|
||||
e "Si es la primera vez que lo haces, Ren'Py te pedirá que selecciones un editor de texto. Editra puede ser una opción segura, pero lee las descripciones para estar seguro."
|
||||
|
||||
# game/tutorial_quickstart.rpy:56
|
||||
translate spanish tutorial_create_bfbd6220:
|
||||
|
||||
# e "After the text editor is downloaded, the script will open up and you can start to change what characters are saying."
|
||||
e "Después de descargar el editor de texto, el script se abrirá y podrá comenzar a cambiar lo que dicen los personajes."
|
||||
|
||||
# game/tutorial_quickstart.rpy:69
|
||||
translate spanish tutorial_dialogue_112ff505:
|
||||
|
||||
# e "Probably the most common thing a creator does with Ren'Py is to write dialogue for the player to read."
|
||||
e "Probablemente lo más común que un creador hace con Ren'Py es escribir un diálogo para que el jugador lo lea."
|
||||
|
||||
# game/tutorial_quickstart.rpy:71
|
||||
translate spanish tutorial_dialogue_be2be31a:
|
||||
|
||||
# e "But before I can show you how to write dialogue, let me show you how we present script examples."
|
||||
e "Pero antes de que pueda mostrarte cómo escribir diálogos, permítame mostrarte cómo presentamos ejemplos de scripts."
|
||||
|
||||
# game/tutorial_quickstart.rpy:74
|
||||
translate spanish tutorial_dialogue_7b6be28e:
|
||||
|
||||
# "Eileen" "Examples will show up in a window like the one above. You'll need to click outside of the example window in order to advance the tutorial."
|
||||
"Eileen" "Los ejemplos se mostrarán en una ventana como la de arriba. Deberás hacer clic fuera de la ventana de ejemplo para avanzar en el tutorial."
|
||||
|
||||
# game/tutorial_quickstart.rpy:76
|
||||
translate spanish tutorial_dialogue_5269d005:
|
||||
|
||||
# "Eileen" "When an example is bigger than the screen, you can scroll around in it using the mouse wheel or by simply dragging the mouse."
|
||||
"Eileen" "Cuando un ejemplo es más grande que la pantalla, puede desplazarse utilizando la rueda del ratón o simplemente arrastrando el ratón."
|
||||
|
||||
# game/tutorial_quickstart.rpy:78
|
||||
translate spanish tutorial_dialogue_241c0c74:
|
||||
|
||||
# "Eileen" "Script might seem scary at first, but if you look you'll see it's easy to match it up to what I'm saying."
|
||||
"Eileen" "La secuencia de comandos puede parecer atemorizante al principio, pero si miras, verás que es fácil hacerlo coincidir con lo que digo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:82
|
||||
translate spanish tutorial_dialogue_f0d66410:
|
||||
|
||||
# e "Let's see the simplest possible Ren'Py game."
|
||||
e "Veamos el juego de Ren'Py más simple posible."
|
||||
|
||||
# game/tutorial_quickstart.rpy:89
|
||||
translate spanish tutorial_dialogue_3e6b0068:
|
||||
|
||||
# "Wow, It's really really dark in here."
|
||||
"Guau, realmente está muy oscuro aquí."
|
||||
|
||||
# game/tutorial_quickstart.rpy:91
|
||||
translate spanish tutorial_dialogue_5072a404:
|
||||
|
||||
# "Lucy" "Better watch out. You don't want to be eaten by a Grue."
|
||||
"Lucy" "Mejor ten cuidado. No quieres ser comido por un Grue."
|
||||
|
||||
# game/tutorial_quickstart.rpy:99
|
||||
translate spanish tutorial_dialogue_d39d1b2b:
|
||||
|
||||
# e "I'll show you the script of that example."
|
||||
e "Te mostraré el script de ese ejemplo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:101
|
||||
translate spanish tutorial_dialogue_f51ecf1f:
|
||||
|
||||
# e "This script demonstrates two kinds of Ren'Py statements, labels and say statements."
|
||||
e "Este script muestra dos tipos de sentencia de Ren'Py, label y say."
|
||||
|
||||
# game/tutorial_quickstart.rpy:103
|
||||
translate spanish tutorial_dialogue_bc7ec147:
|
||||
|
||||
# e "The first line is a label statement. The label statement is used to give a name to a place in the program."
|
||||
e "La primera línea es una sentencia label. La sentencia label se utiliza para dar un nombre a un lugar en el programa."
|
||||
|
||||
# game/tutorial_quickstart.rpy:105
|
||||
translate spanish tutorial_dialogue_b20db833:
|
||||
|
||||
# e "In this case, we're naming a place \"start\". The start label is special, as it marks the place a game begins running."
|
||||
e "En este caso, estamos nombrando un lugar \"start\". La label start es especial, ya que marca el lugar donde un juego comienza a ejecutarse."
|
||||
|
||||
# game/tutorial_quickstart.rpy:107
|
||||
translate spanish tutorial_dialogue_b0afbe96:
|
||||
|
||||
# e "The next line is a simple say statement. It consists of a string beginning with a double-quote, and ending at the next double-quote."
|
||||
e "La siguiente línea es una simple sentencia say. Consiste en una cadena que comienza con una comilla doble y termina en la siguiente comilla doble."
|
||||
|
||||
# game/tutorial_quickstart.rpy:109
|
||||
translate spanish tutorial_dialogue_628c9e4c:
|
||||
|
||||
# e "Special characters in strings can be escaped with a backslash. To include \" in a string, we have to write \\\"."
|
||||
e "Los caracteres especiales en cadenas se pueden escapar con una barra invertida. Para incluir \" en una cadena, tenemos que escribir \\\"."
|
||||
|
||||
# game/tutorial_quickstart.rpy:116
|
||||
translate spanish tutorial_dialogue_3e6b0068_1:
|
||||
|
||||
# "Wow, It's really really dark in here."
|
||||
"Guau, realmente está muy oscuro aquí."
|
||||
|
||||
# game/tutorial_quickstart.rpy:125
|
||||
translate spanish tutorial_dialogue_d7f0b5b7:
|
||||
|
||||
# e "When Ren'Py sees a single string on a line by itself, it uses the narrator to say that string. So a single string can be used to express a character's thoughts."
|
||||
e "Cuando Ren'Py ve una sola cadena en una línea, usa el narrador para decir esa cadena. Por lo tanto, se puede usar una sola cadena para expresar los pensamientos de un personaje."
|
||||
|
||||
# game/tutorial_quickstart.rpy:131
|
||||
translate spanish tutorial_dialogue_5072a404_1:
|
||||
|
||||
# "Lucy" "Better watch out. You don't want to be eaten by a Grue."
|
||||
"Lucy" "Mejor ten cuidado. No quieres ser comido por un Grue."
|
||||
|
||||
# game/tutorial_quickstart.rpy:139
|
||||
translate spanish tutorial_dialogue_9dd2d543:
|
||||
|
||||
# e "When we have two strings separated by a space, the first is used as the character's name, and the second is what the character is saying."
|
||||
e "Cuando tenemos dos cadenas separadas por un espacio, la primera se usa como el nombre del personaje, y la segunda es lo que el personaje está diciendo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:141
|
||||
translate spanish tutorial_dialogue_64ffe685:
|
||||
|
||||
# e "This two-argument form of the say statement is used for dialogue, where a character is speaking out loud."
|
||||
e "Esta forma la sentencia say de dos argumentos se usa para diálogo, donde un personaje habla en voz alta."
|
||||
|
||||
# game/tutorial_quickstart.rpy:143
|
||||
translate spanish tutorial_dialogue_97a33275:
|
||||
|
||||
# e "If you'd like, you can run this game yourself by erasing everything in your project's script.rpy file, and replacing it with the code in the box above."
|
||||
e "Si lo deseas, puede ejecutar este juego borrando todo el archivo script.rpy de tu proyecto y reemplazándolo con el código en el cuadro de arriba."
|
||||
|
||||
# game/tutorial_quickstart.rpy:145
|
||||
translate spanish tutorial_dialogue_c5e70d7e:
|
||||
|
||||
# e "Be sure to preserve the spacing before lines. That's known as indentation, and it's used to help Ren'Py group lines of script into blocks."
|
||||
e "Asegúrese de preservar el espacio antes de las líneas. Eso se conoce como sangría y se usa para ayudar a Ren'Py a agrupar líneas de script en bloques."
|
||||
|
||||
# game/tutorial_quickstart.rpy:149
|
||||
translate spanish tutorial_dialogue_90719f73:
|
||||
|
||||
# e "Using a string for a character's name is inconvenient, for two reasons."
|
||||
e "Usar una cadena para el nombre de un personaje es inconveniente, por dos razones."
|
||||
|
||||
# game/tutorial_quickstart.rpy:151
|
||||
translate spanish tutorial_dialogue_910f286a:
|
||||
|
||||
# e "The first is that's it's a bit verbose. While typing \"Lucy\" isn't so bad, imagine if you had to type \"Eileen Richardson\" thousands of times."
|
||||
e "La primera es que es un poco verbosa. Mientras que escribir \"Lucy\" no es tan malo, imagínate si tuvieras que escribir \"Eileen Richardson\" miles de veces."
|
||||
|
||||
# game/tutorial_quickstart.rpy:153
|
||||
translate spanish tutorial_dialogue_9c9d59c2:
|
||||
|
||||
# e "The second is that it doesn't leave any place to put styling, which can change the look of a character."
|
||||
e "La segunda es que no deja ningún lugar para poner estilo, lo que puede cambiar el aspecto de un personaje."
|
||||
|
||||
# game/tutorial_quickstart.rpy:155
|
||||
translate spanish tutorial_dialogue_2a2d1e51:
|
||||
|
||||
# e "To solve these problems, Ren'Py lets you define Characters."
|
||||
e "Para resolver estos problemas, Ren'Py te permite definir Characters."
|
||||
|
||||
# game/tutorial_quickstart.rpy:159
|
||||
translate spanish tutorial_dialogue_16e8c5fd:
|
||||
|
||||
# e "Here's an example Character definition. It begins with the word \"define\". That tells Ren'Py that we are defining something."
|
||||
e "Aquí hay un ejemplo de definición de Character. Comienza con la palabra \"define\". Eso le dice a Ren'Py que estamos definiendo algo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:161
|
||||
translate spanish tutorial_dialogue_34fe5aa0:
|
||||
|
||||
# e "Define is followed by a short name for the character, like \"l\". We'll be able to use that short name when writing dialogue."
|
||||
e "Define va seguido de un nombre corto para el personaje, como \"l\". Podremos usar ese nombre corto al escribir diálogos."
|
||||
|
||||
# game/tutorial_quickstart.rpy:163
|
||||
translate spanish tutorial_dialogue_67f90201:
|
||||
|
||||
# e "This is followed by an equals sign, and the thing that we're defining. In this case, it's a Character."
|
||||
e "A esto le sigue un signo igual y lo que estamos definiendo. En este caso, es un Character."
|
||||
|
||||
# game/tutorial_quickstart.rpy:165
|
||||
translate spanish tutorial_dialogue_4e454a89:
|
||||
|
||||
# e "On the first line, the character's name is given to be \"Lucy\", and her name will be drawn a reddish color."
|
||||
e "En la primera línea, el nombre del personaje aparece como \"Lucy\", y su nombre aparecerá en un color rojizo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:167
|
||||
translate spanish tutorial_dialogue_db11f026:
|
||||
|
||||
# e "These short names are case-sensitive. Capital L is a different name from lower-case l, so you'll need to be careful about that."
|
||||
e "Estos nombres cortos distinguen entre mayúsculas y minúsculas. L mayuscula es un nombre diferente a l minúscula, por lo que deberás tener cuidado con eso."
|
||||
|
||||
# game/tutorial_quickstart.rpy:171
|
||||
translate spanish tutorial_dialogue_1d161320:
|
||||
|
||||
# e "Now that we have a character defined, we can use it to say dialogue."
|
||||
e "Ahora que tenemos un personaje definido, podemos usar esto para mostrar diálogos."
|
||||
|
||||
# game/tutorial_quickstart.rpy:178
|
||||
translate spanish tutorial_dialogue_3710169c:
|
||||
|
||||
# l "Why are you trying to put words into my mouth? And who are you calling \"it\"?"
|
||||
l "¿Por qué intentas poner palabras en mi boca? ¿Y a quién llamas \"esto\"?"
|
||||
|
||||
# game/tutorial_quickstart.rpy:180
|
||||
translate spanish tutorial_dialogue_6d463776:
|
||||
|
||||
# l "What's more, what are you going to do about the Grue problem? Are you just going to leave me here?"
|
||||
l "Además, ¿qué vas a hacer con el problema del Grue? ¿Me vas a dejar aquí?"
|
||||
|
||||
# game/tutorial_quickstart.rpy:188
|
||||
translate spanish tutorial_dialogue_023bcd31:
|
||||
|
||||
# e "Here's the full game, including the two new lines of dialogue, both of which use the Character we defined to say dialogue."
|
||||
e "Aquí está el juego completo, incluidas las dos nuevas líneas de diálogo, las cuales utilizan al Character que definimos para mostrar diálogos."
|
||||
|
||||
# game/tutorial_quickstart.rpy:190
|
||||
translate spanish tutorial_dialogue_48bb9547:
|
||||
|
||||
# e "The one-argument form of the say statement is unchanged, but in the two-argument form, instead of the first string we can use a short name."
|
||||
e "La forma de un argumento de la sentencia say no se modifica, pero en la forma de dos argumentos, en lugar de la primera cadena podemos usar un nombre corto."
|
||||
|
||||
# game/tutorial_quickstart.rpy:192
|
||||
translate spanish tutorial_dialogue_56a9936f:
|
||||
|
||||
# e "When this say statement is run, Ren'Py will look up the short name, which is really a Python variable. It will then use the associated Character to show the dialogue."
|
||||
e "Cuando se ejecuta esta sentencia, Ren'Py buscará el nombre corto, que es realmente una variable de Python. A continuación, utilizará el Character asociado para mostrar el diálogo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:194
|
||||
translate spanish tutorial_dialogue_d5984a21:
|
||||
|
||||
# e "The Character object controls who is speaking, the color of their name, and many other properties of the dialogue."
|
||||
e "El objeto Character controla quién está hablando, el color de su nombre y muchas otras propiedades del diálogo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:198
|
||||
translate spanish tutorial_dialogue_a5bcac8b:
|
||||
|
||||
# e "Since the bulk of a visual novel is dialogue, we've tried to make it as easy to write as possible."
|
||||
e "Dado que la mayor parte de una novela visual es el diálogo, hemos intentado que sea lo más fácil de escribir posible."
|
||||
|
||||
# game/tutorial_quickstart.rpy:200
|
||||
translate spanish tutorial_dialogue_6b9a42d0:
|
||||
|
||||
# e "Hopefully, by allowing the use of short names for characters, we've succeeded."
|
||||
e "Afortunadamente, al permitir el uso de nombres cortos para los personajes, hemos tenido éxito."
|
||||
|
||||
# game/tutorial_quickstart.rpy:206
|
||||
translate spanish tutorial_images_e09ac970:
|
||||
|
||||
# e "A visual novel isn't much without images. So let's add some images to our little game."
|
||||
e "Una novela visual no es mucho sin imágenes. Así que vamos a añadir algunas imágenes a nuestro pequeño juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:208
|
||||
translate spanish tutorial_images_40140793:
|
||||
|
||||
# e "Before we can show images, we must first choose image names, then place the image files into the images directory."
|
||||
e "Antes de que podamos mostrar imágenes, primero debemos elegir los nombres de las imágenes, luego colocar los archivos de imágenes en el carpeta images."
|
||||
|
||||
# game/tutorial_quickstart.rpy:210
|
||||
translate spanish tutorial_images_d73388f8:
|
||||
|
||||
# e "An image name is something like 'bg cave' or 'lucy happy', with one or more parts separated by spaces."
|
||||
e "Un nombre de imagen es algo así como 'bg cave' o 'lucy happy', con una o más partes separadas por espacios."
|
||||
|
||||
# game/tutorial_quickstart.rpy:212
|
||||
translate spanish tutorial_images_2d5596d4:
|
||||
|
||||
# e "Each part should start with a lower-case letter, and then contain lower-case letters, numbers, and underscores."
|
||||
e "Cada parte debe comenzar con una letra minúscula, y luego contener letras minúsculas, números y guiones bajos."
|
||||
|
||||
# game/tutorial_quickstart.rpy:214
|
||||
translate spanish tutorial_images_e02c0c82:
|
||||
|
||||
# e "The first part of an image is called the tag. For 'bg cave' the tag is 'bg', while for 'lucy happy' the tag is 'lucy'."
|
||||
e "La primera parte de una imagen se llama etiqueta. Para 'bg cave' la etiqueta es 'bg', mientras que para 'lucy happy' la etiqueta es 'lucy'."
|
||||
|
||||
# game/tutorial_quickstart.rpy:216
|
||||
translate spanish tutorial_images_d5eafcf2:
|
||||
|
||||
# e "You can open the images directory by clicking the appropriate button in the Ren'Py launcher."
|
||||
e "Puede abrir la capeta images haciendo clic en el botón correspondiente en el launcher de Ren'Py."
|
||||
|
||||
# game/tutorial_quickstart.rpy:218
|
||||
translate spanish tutorial_images_e4b12fb6:
|
||||
|
||||
# e "The files in the images directory should have the same name as the image, followed by an extension like .jpg, .png, or .webp."
|
||||
e "Los archivos en el directorio de imágenes deben tener el mismo nombre que la imagen, seguido de una extensión como .jpg, .png o .webp."
|
||||
|
||||
# game/tutorial_quickstart.rpy:220
|
||||
translate spanish tutorial_images_a3bd89b2:
|
||||
|
||||
# e "Our example uses 'bg cave.jpg', 'lucy happy.png', and 'lucy mad.png'."
|
||||
e "Nuestro ejemplo utiliza 'bg cave.jpg', 'lucy happy.png' y 'lucy mad.png'."
|
||||
|
||||
# game/tutorial_quickstart.rpy:224
|
||||
translate spanish tutorial_images_76b954de:
|
||||
|
||||
# e "Let's see what those look like in the game."
|
||||
e "Vamos a ver cómo se ven esos en el juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:230
|
||||
translate spanish tutorial_images_f04e72ea:
|
||||
|
||||
# l "Now that the lights are on, we don't have to worry about Grues anymore."
|
||||
l "Ahora que las luces están encendidas, ya no tenemos que preocuparnos por los Grues."
|
||||
|
||||
# game/tutorial_quickstart.rpy:234
|
||||
translate spanish tutorial_images_d77ffa1c:
|
||||
|
||||
# l "But what's the deal with me being in a cave? Eileen gets to be out in the sun, and I'm stuck here!"
|
||||
l "Pero, ¿por qué estoy en una cueva? ¡Eileen sale a la luz del sol y yo estoy atrapada aquí!"
|
||||
|
||||
# game/tutorial_quickstart.rpy:242
|
||||
translate spanish tutorial_images_6c0c938b:
|
||||
|
||||
# e "Here's the script for that scene. Notice how it includes two new statements, the scene and show statement."
|
||||
e "Aquí está el script para esa escena. Observa cómo incluye dos sentencis nuevas, scene y show."
|
||||
|
||||
# game/tutorial_quickstart.rpy:244
|
||||
translate spanish tutorial_images_1a4660b9:
|
||||
|
||||
# e "The scene statement clears the screen, and then adds a background image."
|
||||
e "La sentencia scene borra la pantalla y luego agrega una imagen de fondo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:246
|
||||
translate spanish tutorial_images_672c8cb8:
|
||||
|
||||
# e "The show statement adds a background image on top of all the other images on the screen."
|
||||
e "La sentencia show agrega una imagen de fondo sobre todas las demás imágenes en la pantalla."
|
||||
|
||||
# game/tutorial_quickstart.rpy:248
|
||||
translate spanish tutorial_images_2fc7baee:
|
||||
|
||||
# e "If there was already an image with the same tag, the new image is used to replace the old one."
|
||||
e "Si ya existía una imagen con la misma etiqueta, la nueva imagen se usa para reemplazar la antigua."
|
||||
|
||||
# game/tutorial_quickstart.rpy:250
|
||||
translate spanish tutorial_images_802825f2:
|
||||
|
||||
# e "Changes to the list of shown images take place instantly, so in the example, the user won't see the background by itself."
|
||||
e "Los cambios en la lista de imágenes mostradas tienen lugar al instante, por lo que en el ejemplo, el usuario no verá solo el fondo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:252
|
||||
translate spanish tutorial_images_b246dfdd:
|
||||
|
||||
# e "The second show statement has an at clause, which gives a location on the screen. Common locations are left, right, and center, but you can define many more."
|
||||
e "La segunda sentencia show tiene una cláusula at, que da una ubicación en la pantalla. Las ubicaciones comunes son left, right y center, pero puedes definir muchas más."
|
||||
|
||||
# game/tutorial_quickstart.rpy:257
|
||||
translate spanish tutorial_images_82fceeb8:
|
||||
|
||||
# e "In this example, we show an image named logo base, and we show it at a creator-defined position, rightish."
|
||||
e "En este ejemplo, mostramos una imagen llamada logo base, y la mostramos en una posición definida por el creador, rightish."
|
||||
|
||||
# game/tutorial_quickstart.rpy:259
|
||||
translate spanish tutorial_images_9defda43:
|
||||
|
||||
# e "We also specify that it should be shown behind another image, in this case eileen. That's me."
|
||||
e "También especificamos que debe mostrarse detrás(behind) de otra imagen, en este caso eileen. Esa soy yo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:264
|
||||
translate spanish tutorial_images_73d331f7:
|
||||
|
||||
# e "Finally, there's the hide statement, which hides the image with the given tag."
|
||||
e "Finalmente, está la sentencia hide, que oculta la imagen con la etiqueta dada"
|
||||
|
||||
# game/tutorial_quickstart.rpy:266
|
||||
translate spanish tutorial_images_f34f62d5:
|
||||
|
||||
# e "Since the show statement replaces an image, and the scene statement clears the scene, it's pretty rare to hide an image."
|
||||
e "Dado que la sentencia show reemplaza una imagen, y la sentencia scene borra la escena, es bastante raro ocultar una imagen."
|
||||
|
||||
# game/tutorial_quickstart.rpy:268
|
||||
translate spanish tutorial_images_e06fa53a:
|
||||
|
||||
# e "The main use is for when a character or prop leaves before the scene is over."
|
||||
e "El uso principal es para cuando un personaje o accesorio se va antes de que termine la escena."
|
||||
|
||||
# game/tutorial_quickstart.rpy:282
|
||||
translate spanish tutorial_simple_positions_b492e793:
|
||||
|
||||
# e "When the standard positions that come with Ren'Py aren't enough for you, you can create your own. Here, I'll show you the easy way to do it."
|
||||
e "Cuando las posiciones estándar que vienen con Ren'Py no son suficientes para ti, puedes crear las tuyas. Aquí, te mostraré la manera fácil de hacerlo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:291
|
||||
translate spanish tutorial_simple_positions_04e3bc44:
|
||||
|
||||
# e "The first way to do it is to show an image followed by a colon. Then indented on the next couple of lines are the xalign and yalign transform properties."
|
||||
e "La primera forma de hacerlo es mostrar una imagen seguida de dos puntos. Luego, en el siguiente par de líneas, están sangradas las propiedades de transformación xalign y yalign."
|
||||
|
||||
# game/tutorial_quickstart.rpy:293
|
||||
translate spanish tutorial_simple_positions_3ecad5f8:
|
||||
|
||||
# e "Each of the transform properties is a name followed by a value. For xalign and yalign, the values are numbers."
|
||||
e "Cada una de las propiedades de transformación es un nombre seguido de un valor. Para xalign y yalign, los valores son números."
|
||||
|
||||
# game/tutorial_quickstart.rpy:295
|
||||
translate spanish tutorial_simple_positions_61c1b124:
|
||||
|
||||
# e "The xalign transform property is the important one, as it controls where the image is placed horizontally on the screen."
|
||||
e "La propiedad de transformación xalign es la importante, ya que controla dónde se coloca la imagen horizontalmente en la pantalla."
|
||||
|
||||
# game/tutorial_quickstart.rpy:305
|
||||
translate spanish tutorial_simple_positions_67ebea97:
|
||||
|
||||
# e "An xalign of 0.0 is the left side."
|
||||
e "Un valor 0.0 en xalign es el lado izquierdo"
|
||||
|
||||
# game/tutorial_quickstart.rpy:315
|
||||
translate spanish tutorial_simple_positions_bd4f56d8:
|
||||
|
||||
# e "0.5 is the center."
|
||||
e "0.5 es el centro."
|
||||
|
||||
# game/tutorial_quickstart.rpy:324
|
||||
translate spanish tutorial_simple_positions_fb2c48f2:
|
||||
|
||||
# e "And 1.0 is the right. The decimal place is important and has to be there. Just 1 by itself won't work the same."
|
||||
e "Y 1.0 es el lado derecho. La posición decimal es importante y tiene que estar allí. Solo 1 no funcionará igual."
|
||||
|
||||
# game/tutorial_quickstart.rpy:333
|
||||
translate spanish tutorial_simple_positions_8eebc9a7:
|
||||
|
||||
# e "Of course, you can pick any position in between."
|
||||
e "Por supuesto, puedes elegir cualquier posición intermedia."
|
||||
|
||||
# game/tutorial_quickstart.rpy:335
|
||||
translate spanish tutorial_simple_positions_4cd917f6:
|
||||
|
||||
# e "The yalign property is the same way, with 0.0 being the top of the screen and 1.0 being the bottom. Since most sprites stick to the bottom, it's almost always 1.0."
|
||||
e "La propiedad yalign es de la misma manera, siendo 0.0 la parte superior de la pantalla y 1.0 la parte inferior. Como la mayoría de los sprites se adhieren al fondo, casi siempre es 1.0."
|
||||
|
||||
# game/tutorial_quickstart.rpy:341
|
||||
translate spanish tutorial_simple_positions_fbd1a3eb:
|
||||
|
||||
# e "While being able to write positions like this is useful, having to repeatedly do so isn't. So Ren'Py lets you define a transform once, and reuse it."
|
||||
e "Si bien poder escribir posiciones como esta es útil, tener que hacerlo repetidamente no lo es. Entonces, Ren'Py te permite definir una transformación una vez y reutilizarla."
|
||||
|
||||
# game/tutorial_quickstart.rpy:345
|
||||
translate spanish tutorial_simple_positions_2377e3b3:
|
||||
|
||||
# e "Usually transforms are defined at the top of a file, right after the characters. But it doesn't matter to Ren'Py where you define them."
|
||||
e "Por lo general, las transformaciones se definen en la parte superior de un archivo, justo después de los personajes. Pero a Ren'Py no le importa dónde las definas."
|
||||
|
||||
# game/tutorial_quickstart.rpy:347
|
||||
translate spanish tutorial_simple_positions_3ce7e367:
|
||||
|
||||
# e "The transform is given a name, slightleft, and then the xalign and yalign properties."
|
||||
e "Transform recibe un nombre, slightleft y luego las propiedades xalign e yalign."
|
||||
|
||||
# game/tutorial_quickstart.rpy:355
|
||||
translate spanish tutorial_simple_positions_82d640d9:
|
||||
|
||||
# e "Once a transform has been defined, you can use it in the at clause of the show statement."
|
||||
e "Una vez que se ha definido una transformación, puede usarla en la cláusula at de la sentencia show."
|
||||
|
||||
# game/tutorial_quickstart.rpy:360
|
||||
translate spanish tutorial_simple_positions_16b66785:
|
||||
|
||||
# e "Transforms are sticky. If you replace an image without using a transform, Ren'Py will keep the same transforms it had been using."
|
||||
e "Las transformaciones son aderibles. Si reemplazas una imagen sin usar una transformación, Ren'Py mantendrá las mismas transformaciones que había estado usando."
|
||||
|
||||
# game/tutorial_quickstart.rpy:364
|
||||
translate spanish tutorial_simple_positions_5d5e0cfd:
|
||||
|
||||
# e "Of course, there's a lot more to transforms than this. If you want to learn more, you can read the sections on Position Properties, Transforms and Animation, and Transform Properties."
|
||||
e "Por supuesto, hay mucho más para transformar que esto. Si deseas obtener más información, puedes leer las secciones sobre Propiedades de Posición, Transformaciones y Animaciones, y Propiedades de Transformación."
|
||||
|
||||
# game/tutorial_quickstart.rpy:366
|
||||
translate spanish tutorial_simple_positions_e65da9bf:
|
||||
|
||||
# e "But for many visual novels, xalign and yalign are the only properties that matter."
|
||||
e "Pero para muchas novelas visuales, xalign y yalign son las únicas propiedades que importan."
|
||||
|
||||
# game/tutorial_quickstart.rpy:381
|
||||
translate spanish tutorial_transitions_9b8c714c:
|
||||
|
||||
# e "It can be somewhat jarring for the game to jump from place to place."
|
||||
e "Puede ser un tanto chocante para el juego saltar de un lugar a otro."
|
||||
|
||||
# game/tutorial_quickstart.rpy:388
|
||||
translate spanish tutorial_transitions_3e290ea8:
|
||||
|
||||
# e "To help take some of edge off a change in scene, Ren'Py supports the use of transitions. Let's try that scene change again, but this time we'll use transitions."
|
||||
e "Para ayudar a sacar algo de ventaja a un cambio en la escena, Ren'Py admite el uso de transiciones. Probemos el cambio de escena nuevamente, pero esta vez usaremos transiciones."
|
||||
|
||||
# game/tutorial_quickstart.rpy:402
|
||||
translate spanish tutorial_transitions_9c0a86c4:
|
||||
|
||||
# e "That's much smoother. Here's some example code showing how we include transitions in our game."
|
||||
e "Eso es mucho más suave. Aquí hay un código de ejemplo que muestra cómo incluimos las transiciones en nuestro juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:404
|
||||
translate spanish tutorial_transitions_3e490d40:
|
||||
|
||||
# e "It uses the with statement. The with statement causes the scene to transition from the last things shown to the things currently being shown."
|
||||
e "Utiliza la sentencia with. La sentencia with hace que la escena pase de las últimas cosas mostradas a las que se muestran actualmente."
|
||||
|
||||
# game/tutorial_quickstart.rpy:406
|
||||
translate spanish tutorial_transitions_a43847df:
|
||||
|
||||
# e "It takes a transition as an argument. In this case, we're using the Dissolve transition. This transition takes as an argument the amount of time the dissolve should take."
|
||||
e "Toma una transición como argumento. En este caso, estamos utilizando la transición Dissolve. Esta transición toma como argumento la cantidad de tiempo que la disolución debería tomar."
|
||||
|
||||
# game/tutorial_quickstart.rpy:408
|
||||
translate spanish tutorial_transitions_6fcee414:
|
||||
|
||||
# e "In this case, each transition takes half a second."
|
||||
e "En este caso, cada transición dura medio segundo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:412
|
||||
translate spanish tutorial_transitions_033042cc:
|
||||
|
||||
# e "We can define a short name for a transition, using the define statement. Here, we're defining slowdissolve to be a dissolve that takes a whole second."
|
||||
e "Podemos definir un nombre corto para una transición, utilizando la sentencia define. Aquí, estamos definiendo slowdissolve como una disolución que toma un segundo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:427
|
||||
translate spanish tutorial_transitions_0ba82f00:
|
||||
|
||||
# e "Once a transition has been given a short name, we can use it in our game."
|
||||
e "Una vez que se le ha dado un nombre corto a una transición, podemos usarla en nuestro juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:431
|
||||
translate spanish tutorial_transitions_51ff9600:
|
||||
|
||||
# e "Ren'Py defines some transitions for you, like dissolve, fade, and move. For more complex or customized transitions, you'll have to define your own."
|
||||
e "Ren'Py define algunas transiciones por ti, como dissolve, fade y move. Para transiciones más complejas o personalizadas, tendrás que definir las tuyas propias."
|
||||
|
||||
# game/tutorial_quickstart.rpy:433
|
||||
translate spanish tutorial_transitions_1528f73f:
|
||||
|
||||
# e "If you're interested, check out the Transitions Gallery section of this tutorial."
|
||||
e "Si estás interesado, consulta la sección Galería de Transiciones de este tutorial."
|
||||
|
||||
# game/tutorial_quickstart.rpy:439
|
||||
translate spanish tutorial_music_8b92efb7:
|
||||
|
||||
# e "Another important part of a visual novel or simulation game is the soundtrack."
|
||||
e "Otra parte importante de una novela visual o juego de simulación es la banda sonora."
|
||||
|
||||
# game/tutorial_quickstart.rpy:441
|
||||
translate spanish tutorial_music_53910317:
|
||||
|
||||
# e "Ren'Py breaks sound up into channels. The channel a sound is played on determines if the sound loops, and if it is saved and restored with the game."
|
||||
e "Ren'Py separa el sonido en canales. El canal en el que se reproduce un sonido determina si el sonido se repite, y si se guarda y se restaura con el juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:443
|
||||
translate spanish tutorial_music_a1e37712:
|
||||
|
||||
# e "When a sound is played on the music channel, it is looped, and it is saved when the game is saved."
|
||||
e "Cuando se reproduce un sonido en el canal music, se reproduce en bucle y se guarda cuando se guarda el juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:445
|
||||
translate spanish tutorial_music_d9086d22:
|
||||
|
||||
# e "When the channel named sound is used, the sound is played once and then stopped. It isn't saved."
|
||||
e "Cuando se utiliza el canal denominado sound, el sonido se reproduce una vez y luego se detiene. No se guarda."
|
||||
|
||||
# game/tutorial_quickstart.rpy:447
|
||||
translate spanish tutorial_music_3555b640:
|
||||
|
||||
# e "The sounds themselves are stored in audio files. Ren'Py supports the Opus, Ogg Vorbis, and mp3 formats."
|
||||
e "Los sonidos mismos se almacenan en archivos de audio. Ren'Py soporta los formatos Opus, Ogg Vorbis y mp3."
|
||||
|
||||
# game/tutorial_quickstart.rpy:454
|
||||
translate spanish tutorial_music_8b606a55:
|
||||
|
||||
# e "The play music command replaces the currently playing music, and replaces it with the named filename."
|
||||
e "El comando play music reemplaza la música que se está reproduciendo actualmente y la reemplaza archivo nombrado."
|
||||
|
||||
# game/tutorial_quickstart.rpy:456
|
||||
translate spanish tutorial_music_18650fe7:
|
||||
|
||||
# e "If you specify the currently-playing song, it will restart it."
|
||||
e "Si especificas la canción que se está reproduciendo actualmente, se reiniciará."
|
||||
|
||||
# game/tutorial_quickstart.rpy:458
|
||||
translate spanish tutorial_music_413d91fc:
|
||||
|
||||
# e "If the optional fadeout clause is given, it will fade out the currently playing music before starting the new music."
|
||||
e "Si la cláusula opcional fadeout se escribe, se desvanecerá la música que se está reproduciendo en ese momento antes de iniciar la nueva música."
|
||||
|
||||
# game/tutorial_quickstart.rpy:463
|
||||
translate spanish tutorial_music_a282a0e3:
|
||||
|
||||
# e "The queue statement also adds music to the named channel, but it waits until the currently-playing song is finished before playing the new music."
|
||||
e "La sentencia queue también agrega música al canal nombrado, pero espera hasta que la canción que se está reproduciendo se termine antes de reproducir la nueva música."
|
||||
|
||||
# game/tutorial_quickstart.rpy:468
|
||||
translate spanish tutorial_music_01ca6bad:
|
||||
|
||||
# e "The third statement is the stop statement. It stops the music playing on a channel. It too takes the fadeout clause."
|
||||
e "La tercera sentencia es stop. Detiene la reproducción de música en un canal. También toma la cláusula fadeout."
|
||||
|
||||
# game/tutorial_quickstart.rpy:473
|
||||
translate spanish tutorial_music_384937da:
|
||||
|
||||
# e "Unlike the music channel, playing a sound on the sound channel causes it to play only once."
|
||||
e "A diferencia del canal music, la reproducción de un sonido en el canal sound hace que se reproduzca solo una vez."
|
||||
|
||||
# game/tutorial_quickstart.rpy:480
|
||||
translate spanish tutorial_music_1d3e9fd2:
|
||||
|
||||
# e "You can queue up multiple sounds on the sound channel, but the sounds will only play one at a time."
|
||||
e "Puedes poner en cola varios sonidos en el canal de sonido, pero los sonidos solo se reproducirán uno a la vez."
|
||||
|
||||
# game/tutorial_quickstart.rpy:486
|
||||
translate spanish tutorial_music_aa01c19d:
|
||||
|
||||
# e "Ren'Py has separate mixers for sound, music, and voices, so the player can adjust them as they like."
|
||||
e "Ren'Py tiene mezcladores separados para sonido, música y voces, por lo que el jugador puede ajustarlos a su gusto."
|
||||
|
||||
# game/tutorial_quickstart.rpy:492
|
||||
translate spanish tutorial_menus_0426904b:
|
||||
|
||||
# e "Many visual novels require the player to make choices from in-game menus. These choices can add some challenge to the game, or adjust it to the player's preferences."
|
||||
e "Muchas novelas visuales requieren que el jugador haga elecciones en los menús del juego. Estas opciones pueden agregar algún desafío al juego, o ajustarlo a las preferencias del jugador."
|
||||
|
||||
# game/tutorial_quickstart.rpy:494
|
||||
translate spanish tutorial_menus_431eeff0:
|
||||
|
||||
# e "Do you like to play visual novels with choices in them?"
|
||||
e "¿Te gusta jugar novelas visuales con opciones?"
|
||||
|
||||
# game/tutorial_quickstart.rpy:509
|
||||
translate spanish choice1_yes_f6d95df8:
|
||||
|
||||
# e "While creating a multi-path visual novel can be a bit more work, it can yield a unique experience."
|
||||
e "Si bien la creación de una novela visual de múltiples rutas puede ser un poco más de trabajo, puede brindar una experiencia única."
|
||||
|
||||
# game/tutorial_quickstart.rpy:517
|
||||
translate spanish choice1_no_72958b50:
|
||||
|
||||
# e "Games without menus are called kinetic novels, and there are dozens of them available to play."
|
||||
e "Los juegos sin menús se llaman novelas cinéticas, y hay docenas de ellas disponibles para jugar."
|
||||
|
||||
# game/tutorial_quickstart.rpy:528
|
||||
translate spanish choice1_done_acba9504:
|
||||
|
||||
# e "Here, you can see the code for that menu. If you scroll down, you can see the code we run after the menu."
|
||||
e "Aquí puedes ver el código de ese menú. Si se desplaza hacia abajo, puede ver el código que corremos después de menu."
|
||||
|
||||
# game/tutorial_quickstart.rpy:530
|
||||
translate spanish choice1_done_f9fa6889:
|
||||
|
||||
# e "Menus are introduced by the menu statement. The menu statement takes an indented block, in which there can be one line of dialogue and multiple choices."
|
||||
e "Los menús son introducidos por la sentencia menu. La sentencia menu toma un bloque con sangría, en el que puede haber una línea de diálogo y múltiples opciones."
|
||||
|
||||
# game/tutorial_quickstart.rpy:532
|
||||
translate spanish choice1_done_ebb2db38:
|
||||
|
||||
# e "Each choice must end with a colon, as each choice has its own block of Ren'Py code, that is run when that choice is selected."
|
||||
e "Cada opción debe terminar con dos puntos, ya que cada opción tiene su propio bloque de código Ren'Py, que se ejecuta cuando se selecciona esa opción."
|
||||
|
||||
# game/tutorial_quickstart.rpy:534
|
||||
translate spanish choice1_done_59cac95d:
|
||||
|
||||
# e "Here, each block jumps to a label. While you could put small amounts of Ren'Py code inside a menu label, it's probably good practice to usually jump to a bigger block of code."
|
||||
e "Aquí, cada bloque salta(jump) a una label. Si bien puede colocar pequeñas cantidades de código Ren'Py dentro de una label de menú, probablemente sea una buena práctica saltar a un bloque de código más grande."
|
||||
|
||||
# game/tutorial_quickstart.rpy:536
|
||||
translate spanish choice1_done_2851a313:
|
||||
|
||||
# e "Scrolling down past the menu, you can see the labels that the menu jumps to. There are three labels here, named choice1_yes, choice1_no, and choice1_done."
|
||||
e "Desplazándote hacia abajo más allá del menú, puede ver las labels a las que salta el menú. Aquí hay tres labels, denominadas choice1_yes, choice1_no y choice1_done."
|
||||
|
||||
# game/tutorial_quickstart.rpy:538
|
||||
translate spanish choice1_done_ff761b03:
|
||||
|
||||
# e "When the first menu choice is picked, we jump to the choice1_yes, which runs two lines of script before jumping to choice1_done."
|
||||
e "Cuando se selecciona la primera opción de menú, saltamos a choice1_yes, que ejecuta dos líneas de script antes de saltar a la choice1_done."
|
||||
|
||||
# game/tutorial_quickstart.rpy:540
|
||||
translate spanish choice1_done_664fe702:
|
||||
|
||||
# e "Similarly, picking the second choice jumps us to choice1_no, which also runs two lines of script."
|
||||
e "De manera similar, elegir la segunda opción nos lleva a choice1_no, que también ejecuta dos líneas de script."
|
||||
|
||||
# game/tutorial_quickstart.rpy:542
|
||||
translate spanish choice1_done_31d12b1e:
|
||||
|
||||
# e "The lines beginning with the dollar sign are lines of python code, which are used to set a flag based on the user's choice."
|
||||
e "Las líneas que comienzan con el signo de dólar son líneas de código Python, que se utilizan para establecer una flag en función de la elección del usuario."
|
||||
|
||||
# game/tutorial_quickstart.rpy:544
|
||||
translate spanish choice1_done_88398d3e:
|
||||
|
||||
# e "The flag is named menu_flag, and it's set to True or False based on the user's choice. The if statement can be used to test a flag, so the game can remember the user's choices."
|
||||
e "La flag se llama menu_flag y se establece en True o False según la elección del usuario. La sentencia if se puede usar para probar una flag, para que el juego pueda recordar las elecciones del usuario."
|
||||
|
||||
# game/tutorial_quickstart.rpy:549
|
||||
translate spanish choice1_done_2828dbfc:
|
||||
|
||||
# e "For example, I remember that you plan to use menus in your game."
|
||||
e "Por ejemplo, recuerdo que planeas usar menús en tu juego."
|
||||
|
||||
# game/tutorial_quickstart.rpy:553
|
||||
translate spanish choice1_done_503786e4:
|
||||
|
||||
# e "For example, I remember that you're planning to make a kinetic novel, without menus."
|
||||
e "Por ejemplo, recuerdo que planeas hacer una novela cinética, sin menús."
|
||||
|
||||
# game/tutorial_quickstart.rpy:555
|
||||
translate spanish choice1_done_819e234a:
|
||||
|
||||
# e "Here's an example that shows how we can test a flag, and do different things if it is true or not."
|
||||
e "Aquí hay un ejemplo que muestra cómo podemos probar una flag y hacer cosas diferentes si es verdad o no."
|
||||
|
||||
# game/tutorial_quickstart.rpy:559
|
||||
translate spanish choice1_done_461e6a59:
|
||||
|
||||
# e "Finally, this shows how you can show dialogue and menus at the same time. Understand?" nointeract
|
||||
e "Finalmente, esto muestra cómo puedes mostrar diálogos y menús al mismo tiempo. ¿Entendido?" nointeract
|
||||
|
||||
# game/tutorial_quickstart.rpy:564
|
||||
translate spanish choice1_done_a32e30fd:
|
||||
|
||||
# e "Great."
|
||||
e "Genial."
|
||||
|
||||
# game/tutorial_quickstart.rpy:568
|
||||
translate spanish choice1_done_fbd1dbc1:
|
||||
|
||||
# e "If you look at the example, before the first choice, there's an indented say statement."
|
||||
e "Si nos fijamos en el ejemplo, antes de la primera opción, hay una sentencia say con sangría."
|
||||
|
||||
# game/tutorial_quickstart.rpy:574
|
||||
translate spanish menu3_done_47fa2268:
|
||||
|
||||
# e "Although we won't demonstrate it here, Ren'Py supports making decisions based on a combinations of points, flags, and other factors."
|
||||
e "Aunque no lo demostraremos aquí, Ren'Py admite la toma de decisiones basadas en una combinación de puntos, flags y otros factores."
|
||||
|
||||
# game/tutorial_quickstart.rpy:576
|
||||
translate spanish menu3_done_826a600b:
|
||||
|
||||
# e "One of Ren'Py's big advantages is the flexibility using a scripting language like Python provides us. It lets us easily scale from kinetic novels to complex simulation games."
|
||||
e "Una de las grandes ventajas de Ren'Py es la flexibilidad que ofrece el uso de un lenguajes de scripting como Python. Nos permite escalar fácilmente de novelas cinéticas a juegos de simulación complejos."
|
||||
|
||||
# game/tutorial_quickstart.rpy:585
|
||||
translate spanish tutorial_input_066611c5:
|
||||
|
||||
# e "Some games might prompt the player for input."
|
||||
e "Algunos juegos pueden pedirle al jugador una entrada."
|
||||
|
||||
# game/tutorial_quickstart.rpy:599
|
||||
translate spanish tutorial_input_dc3b4560:
|
||||
|
||||
# e "That's done with Python, and especially the renpy.input function. The first line of this example prompts the player for some texts, and sticks it in the name variable."
|
||||
e "Eso se hace con Python, y especialmente con la función renpy.input. La primera línea de este ejemplo solicita al jugador algunos textos y lo pega en la variable name."
|
||||
|
||||
# game/tutorial_quickstart.rpy:601
|
||||
translate spanish tutorial_input_c88b3f4e:
|
||||
|
||||
# e "Often times, you'll want to clean the name up before you use it. The last line does that, by calling the strip method to remove whitespace, and replacing the name with a default if it's missing."
|
||||
e "Muchas veces, querrás limpiar name antes de usarla. La última línea hace eso, llamando al método strip para eliminar los espacios en blanco, y reemplazando el nombre con un valor predeterminado si falta."
|
||||
|
||||
# game/tutorial_quickstart.rpy:605
|
||||
translate spanish tutorial_input_1236e9da:
|
||||
|
||||
# e "To interpolate a variable, write it in square brackets. Isn't that right, [name]?"
|
||||
e "Para interpolar una variable, escríbala entre corchetes. ¿Correcto, [name]?"
|
||||
|
||||
# game/tutorial_quickstart.rpy:609
|
||||
translate spanish tutorial_input_c1f7a808:
|
||||
|
||||
# e "Variable names can also be shown in character names. To do that, just include the variable in square brackets in the character's name. Got it?"
|
||||
e "Los nombres de variables también se pueden mostrar en nombres de personajes. Para hacer eso, simplemente incluya la variable entre corchetes en el nombre del personaje. ¿Entendido?"
|
||||
|
||||
# game/tutorial_quickstart.rpy:612
|
||||
translate spanish tutorial_input_f7757a8e:
|
||||
|
||||
# g "I think I do."
|
||||
g "Eso creo."
|
||||
|
||||
# game/tutorial_quickstart.rpy:619
|
||||
translate spanish tutorial_input_0548d3e2:
|
||||
|
||||
# e "Variable interpolation also works with other variables. Here, the answer is [answer] and the flag is [flag]."
|
||||
e "La interpolación de variables también funciona con otras variables. Aquí, la respuesta es [answer] y la flag es [flag]."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# tutorial_quickstart.rpy:2
|
||||
old "Lucy"
|
||||
new "Lucy"
|
||||
|
||||
# tutorial_quickstart.rpy:497
|
||||
old "Yes, I do."
|
||||
new "Sí."
|
||||
|
||||
# tutorial_quickstart.rpy:497
|
||||
old "No, I don't."
|
||||
new "No."
|
||||
|
||||
# tutorial_quickstart.rpy:589
|
||||
old "What's your name?"
|
||||
new "¿Cómo te llamas?"
|
||||
|
||||
# tutorial_quickstart.rpy:591
|
||||
old "Guy Shy"
|
||||
new "Chico Timido"
|
||||
|
||||
# game/tutorial_quickstart.rpy:449
|
||||
translate spanish tutorial_music_a2ffbe9b:
|
||||
|
||||
# e "Let's check out some of the commands that can affect the music channel."
|
||||
e "Revisemos algunos de los comandos que pueden afectar el canal music."
|
||||
|
||||
@@ -0,0 +1,765 @@
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:3
|
||||
translate spanish screen_displayables_7c897a6d:
|
||||
|
||||
# e "There are quite a few screen displayables. Here, I'll tell you about some of the most important ones."
|
||||
e "Hay bastantes visualizables screen. Aquí les contaré algunas de las más importantes."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:9
|
||||
translate spanish screen_displayables_menu_fef7b441:
|
||||
|
||||
# e "What would you like to know about?" nointeract
|
||||
e "¿Qué te gustaría saber?" nointeract
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:49
|
||||
translate spanish screen_displayable_properties_76c5639a:
|
||||
|
||||
# e "There are a few properties that every screen language displayable shares. Here, I'll demonstrate them for you."
|
||||
e "Hay algunas propiedades que todos visualizables del lenguaje de pantalla comparten. Aquí, te las demostraré."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:57
|
||||
translate spanish screen_displayable_properties_527d4b4e:
|
||||
|
||||
# e "First off, every screen language displayable supports the position properties. When the container a displayable is in supports it, you can use properties like align, anchor, pos, and so so on."
|
||||
e "En primer lugar, todos los lenguajes de visualizables screen admiten las propiedades de posición. Cuando el contenedor en el que se puede exhibir lo admite, puedes usar propiedades como align, anchor, pos, etc."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:69
|
||||
translate spanish screen_displayable_properties_8aff26dd:
|
||||
|
||||
# e "The at property applies a transform to the displayable, the same way the at clause in the show statement does."
|
||||
e "La propiedad at aplica una transformación al visualizable, de la misma forma que lo hace la cláusula at en la sentencia show."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:106
|
||||
translate spanish screen_displayable_properties_2ed40a70:
|
||||
|
||||
# e "The id property is mostly used with the say screen, which is used to show dialogue. Outside of the say screen, it isn't used much."
|
||||
e "La propiedad id se usa principalmente con la pantalla say, que se usa para mostrar el diálogo. Fuera de la pantalla de say, no se usa mucho."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:108
|
||||
translate spanish screen_displayable_properties_da5733d1:
|
||||
|
||||
# e "It tells Ren'Py which displayables are the background window, 'who' is speaking, and 'what' is being said. This used to apply per-Character styles, and help with auto-forward mode."
|
||||
e "Le dice a Ren'Py qué visualizables son la ventana de fondo, 'who' quién hablan y 'what' que se dice. Esto solía aplicar estilos por Character y ayuda con el modo de reenvío automático."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:123
|
||||
translate spanish screen_displayable_properties_cc09fade:
|
||||
|
||||
# e "The style property lets you specify the style of a single displayable."
|
||||
e "La propiedad de estilo te permiten especificar el estilo de un solo visualizable."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:144
|
||||
translate spanish screen_displayable_properties_a7f4e25c:
|
||||
|
||||
# e "The style_prefix property sets the prefix of the style that's used for a displayable and its children."
|
||||
e "La propiedad style_prefix establece el prefijo del estilo que se usa para un displayable y sus hijos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:146
|
||||
translate spanish screen_displayable_properties_6bdb0723:
|
||||
|
||||
# e "For example, when the style_prefix property is 'green', the vbox has the 'green_vbox' style, and the text in it has the 'green_text' style."
|
||||
e "Por ejemplo, cuando la propiedad style_prefix es 'green', vbox tiene el estilo 'green_vbox' y el texto tiene el estilo 'green_text'."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:150
|
||||
translate spanish screen_displayable_properties_8a3a8635:
|
||||
|
||||
# e "There are a few more properties than these, and you can find the rest in the documentation. But these are the ones you can expect to see in your game, in the default screens."
|
||||
e "Hay algunas propiedades más que éstas, y puede encontrar el resto en la documentación. Pero estos son los que puedes esperar ver en tu juego, en las pantallas predeterminadas."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:156
|
||||
translate spanish add_displayable_ec121c5c:
|
||||
|
||||
# e "Sometimes you'll have a displayable, like an image, that you want to add to a screen."
|
||||
e "A veces, tendrás un visualizable, como una imagen, que deseas agregar a una pantalla."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:165
|
||||
translate spanish add_displayable_7ec3e2b0:
|
||||
|
||||
# e "This can be done using the add statement, which adds an image or other displayable to the screen."
|
||||
e "Esto se puede hacer usando la sentencia add, que agrega una imagen u otro visualizable en la pantalla."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:167
|
||||
translate spanish add_displayable_7112a377:
|
||||
|
||||
# e "There are a few ways to refer to the image. If it's in the images directory or defined with the image statement, you can just put the name inside a quoted string."
|
||||
e "Hay algunas maneras de referirse a la imagen. Si está en el directorio de imágenes o definido con la sentencia image, solo pon el nombre dentro de una cadena entre comillas."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:176
|
||||
translate spanish add_displayable_8ba81c26:
|
||||
|
||||
# e "An image can also be referred to by it's filename, relative to the game directory."
|
||||
e "También se puede hacer referencia a una imagen por su nombre de archivo, en relación con el directorio del juego."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:185
|
||||
translate spanish add_displayable_1f5571e3:
|
||||
|
||||
# e "Other displayables can also be added using the add statement. Here, we add the Solid displayable, showing a solid block of color."
|
||||
e "También se pueden agregar otros visualizables utilizando la instrucción add. Aquí, agregamos el visualizable Solid, mostrando un bloque sólido de color."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:195
|
||||
translate spanish add_displayable_0213ffa2:
|
||||
|
||||
# e "In addition to the displayable, the add statement can be given transform properties. These can place or otherwise transform the displayable being added."
|
||||
e "Además de visualizables, a la instrucción add se le pueden dar propiedades de transformación. Estos pueden colocar o transformar el visualizable agregando."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:207
|
||||
translate spanish add_displayable_3a56a464:
|
||||
|
||||
# e "Of course, the add statement can also take the at property, letting you give it a more complex transform."
|
||||
e "Por supuesto, la instrucción add también puede tomar la propiedad at, permitiéndole darle una transformación más compleja."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:222
|
||||
translate spanish text_displayable_96f88225:
|
||||
|
||||
# e "The screen language text statement adds a text displayable to the screen. It takes one argument, the text to be displayed."
|
||||
e "La sentencia text del lenguaje de pantalla agrega un visualizable text a la pantalla. Toma un argumento, el texto que se mostrará."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:224
|
||||
translate spanish text_displayable_1ed1a8c2:
|
||||
|
||||
# e "In addition to the common properties that all displayables take, text takes the text style properties. For example, size sets the size of the text."
|
||||
e "Además de las propiedades comunes que toman todos los visualizables, el texto toma las propiedades de estilo text. Por ejemplo, tamaño establece el tamaño del texto."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:234
|
||||
translate spanish text_displayable_9351d9dd:
|
||||
|
||||
# e "The text displayable can also interpolate values enclosed in square brackets."
|
||||
e "El visualizable text también puede interpolar valores encerrados entre corchetes."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:236
|
||||
translate spanish text_displayable_32d76ccb:
|
||||
|
||||
# e "When text is displayed in a screen using the text statement variables defined in the screen take precedence over those defined outside it."
|
||||
e "Cuando el texto se muestra en una pantalla, las variables de sentencia text definidas en la pantalla tienen prioridad sobre las definidas fuera de ella."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:238
|
||||
translate spanish text_displayable_7e84a5d1:
|
||||
|
||||
# e "Those variables may be parameters given to the screen, defined with the default or python statements, or set using the SetScreenVariable action."
|
||||
e "Esas variables pueden ser parámetros dados a la pantalla, definidos con las sentencias predeterminadas o de python, o configurados mediante la acción SetScreenVariable."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:247
|
||||
translate spanish text_displayable_8bc866c4:
|
||||
|
||||
# e "There's not much more to say about text in screens, as it works the same way as all other text in Ren'Py."
|
||||
e "No hay mucho más que decir sobre el texto en las pantallas, ya que funciona de la misma manera que el resto del texto en Ren'Py."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:255
|
||||
translate spanish layout_displayables_d75efbae:
|
||||
|
||||
# e "The layout displayables take other displayables and lay them out on the screen."
|
||||
e "El visualizable layout toma otros visualizables y los coloca en la pantalla."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:269
|
||||
translate spanish layout_displayables_9a15144d:
|
||||
|
||||
# e "For example, the hbox displayable takes its children and lays them out horizontally."
|
||||
e "Por ejemplo, el visualizable hbox toma a sus hijos y los coloca horizontalmente."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:284
|
||||
translate spanish layout_displayables_48eff197:
|
||||
|
||||
# e "The vbox displayable is similar, except it takes its children and arranges them vertically."
|
||||
e "El visualizable vbox es similar, excepto que toma a sus hijos y los organiza verticalmente."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:286
|
||||
translate spanish layout_displayables_74de8a66:
|
||||
|
||||
# e "Both of the boxes take the box style properties, the most useful of which is spacing, the amount of space to leave between children."
|
||||
e "Ambas cajas toman las propiedades de estilo de box, la más útil de las cuales es el spacing, la cantidad de espacio para dejar entre los hijos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:301
|
||||
translate spanish layout_displayables_a156591f:
|
||||
|
||||
# e "The grid displayable displays its children in a grid of equally-sized cells. It takes two arguments, the number of columns and the number of rows."
|
||||
e "El visualizable grid muestra a sus hijos en una malla de celdas de igual tamaño. Toma dos argumentos, el número de columnas y el número de filas."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:303
|
||||
translate spanish layout_displayables_126f5816:
|
||||
|
||||
# e "The grid has to be full, or Ren'Py will produce an error. Notice how in this example, the empty cell is filled with a null."
|
||||
e "La malla tiene que estar llena, o Ren'Py producirá un error. Observe cómo en este ejemplo, la celda vacía se rellena con un valor null."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:305
|
||||
translate spanish layout_displayables_bfaaaf9b:
|
||||
|
||||
# e "Like the boxes, grid uses the spacing property to specify the space between cells."
|
||||
e "Al igual que las boxes, grid utiliza la propiedad de espaciado para especificar el espacio entre las celdas."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:321
|
||||
translate spanish layout_displayables_3e931106:
|
||||
|
||||
# e "Grid also takes the transpose property, to make it fill top-to-bottom before it fills left-to-right."
|
||||
e "Grid también toma la propiedad de transposición, para que se llene de arriba a abajo antes de que se llene de izquierda a derecha."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:338
|
||||
translate spanish layout_displayables_afdc1b11:
|
||||
|
||||
# e "And just to demonstrate that all cells are equally-sized, here's what happens when once child is bigger than the others."
|
||||
e "Y solo para demostrar que todas las celdas tienen el mismo tamaño, esto es lo que sucede cuando un hijo es más grande que los demás."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:353
|
||||
translate spanish layout_displayables_a23e2826:
|
||||
|
||||
# e "The fixed displayable displays the children using Ren'Py's normal placement algorithm. This lets you place displayables anywhere in the screen."
|
||||
e "El visualizable fixed muestra a los hijos utilizando el algoritmo de colocación normal de Ren'Py. Esto le permite colocar visualizables en cualquier lugar de la pantalla."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:355
|
||||
translate spanish layout_displayables_fd3926ca:
|
||||
|
||||
# e "By default, the layout expands to fill all the space available to it. To prevent that, we use the xsize and ysize properties to set its size in advance."
|
||||
e "De forma predeterminada, el layout se expande para llenar todo el espacio disponible. Para evitar eso, usamos las propiedades xsize y ysize para establecer su tamaño por adelantado."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:369
|
||||
translate spanish layout_displayables_eff42786:
|
||||
|
||||
# e "When a non-layout displayable is given two or more children, it's not necessary to create a fixed. A fixed is automatically added, and the children are added to it."
|
||||
e "Cuando a un visualizable que no sea layout da dos o más hijos, no es necesario crear un fixed. Se agrega automáticamente fixed, y se agregan los hijos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:384
|
||||
translate spanish layout_displayables_c32324a7:
|
||||
|
||||
# e "Finally, there's one convenience to save space. When many displayables are nested, adding a layout to each could cause crazy indent levels."
|
||||
e "Por último, hay una conveniencia para ahorrar espacio. Cuando se anidan muchos visualizables, agregar un diseño a cada uno podría causar niveles de sangría locos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:386
|
||||
translate spanish layout_displayables_d7fa0f28:
|
||||
|
||||
# e "The has statement creates a layout, and then adds all further children of its parent to that layout. It's just a convenience to make screens more readable."
|
||||
e "La sentencia has crea un diseño y luego agrega todos los demás hijos de su padre a ese diseño. Es solo una conveniencia para hacer las pantallas más legibles."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:395
|
||||
translate spanish window_displayables_14beb786:
|
||||
|
||||
# e "In the default GUI that Ren'Py creates for a game, most user interface elements expect some sort of background."
|
||||
e "En la GUI predeterminada que Ren'Py crea para un juego, la mayoría de los elementos de la interfaz de usuario esperan algún tipo de fondo."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:405
|
||||
translate spanish window_displayables_495d332b:
|
||||
|
||||
# e "Without the background, text can be hard to read. While a frame isn't strictly required, many screens have one or more of them."
|
||||
e "Sin el fondo, el texto puede ser difícil de leer. Mientras que un marco no es estrictamente requerido, muchas pantallas tienen uno o más."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:417
|
||||
translate spanish window_displayables_2c0565ab:
|
||||
|
||||
# e "But when I add a background, it's much easier. That's why there are two displayables that are intended to give backgrounds to user interface elements."
|
||||
e "Pero cuando agrego un fondo, es mucho más fácil. Es por eso que hay dos visualizables destinados a proporcionar fondos a los elementos de la interfaz de usuario."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:419
|
||||
translate spanish window_displayables_c7d0968c:
|
||||
|
||||
# e "The two displayables are frame and window. Frame is the one we use above, and it's designed to provide a background for arbitrary parts of the user interface."
|
||||
e "Los dos visualizables son frame y window. El que usamos anteriormente es frame, y está diseñado para proporcionar un fondo para partes arbitrarias de la interfaz de usuario."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:423
|
||||
translate spanish window_displayables_7d843f62:
|
||||
|
||||
# e "On the other hand, the window displayable is very specific. It's used to provide the text window. If you're reading what I'm saying, you're looking at the text window right now."
|
||||
e "Por otro lado, el visualizable window es muy específico. Se utiliza para proporcionar la ventana de texto. Si estás leyendo lo que estoy diciendo, estás mirando la ventana de texto ahora mismo."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:425
|
||||
translate spanish window_displayables_de5963e4:
|
||||
|
||||
# e "Both frames and windows can be given window style properties, allowing you to change things like the background, margins, and padding around the window."
|
||||
e "Tanto frames como windows pueden recibir propiedades de estilo window, lo que le permite cambiar elementos como el fondo, los márgenes y el relleno alrededor de la ventana."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:433
|
||||
translate spanish button_displayables_ea626553:
|
||||
|
||||
# e "One of the most flexible displayables is the button displayable, and its textbutton and imagebutton variants."
|
||||
e "Uno de los indicadores más flexibles es el visualizable button, y sus variantes textbutton y imagebutton."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:443
|
||||
translate spanish button_displayables_372dcc0f:
|
||||
|
||||
# e "A button is a displayable that when selected runs an action. Buttons can be selected by clicking with the mouse, by touch, or with the keyboard and controller."
|
||||
e "Un botón es un botón desplegable que, cuando se selecciona, ejecuta una acción. Los botones se pueden seleccionar haciendo clic con el mouse, al tocar o con el teclado y el controlador."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:445
|
||||
translate spanish button_displayables_a6b270ff:
|
||||
|
||||
# e "Actions can do many things, like setting variables, showing screens, jumping to a label, or returning a value. There are many {a=https://www.renpy.org/doc/html/screen_actions.html}actions in the Ren'Py documentation{/a}, and you can also write your own."
|
||||
e "Las acciones(action) pueden hacer muchas cosas, como establecer variables, mostrar pantallas, saltar a una etiqueta o devolver un valor. Hay muchas acciones {a=https://www.renpy.org/doc/html/screen_actions.html}en la documentación de Ren'Py{/a}, y también puede escribir las tuyas propias."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:458
|
||||
translate spanish button_displayables_4c600d20:
|
||||
|
||||
# e "It's also possible to run actions when a button gains and loses focus."
|
||||
e "También es posible ejecutar acciones cuando un botón gana y pierde el foco."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:473
|
||||
translate spanish button_displayables_47af4bb9:
|
||||
|
||||
# e "A button takes another displayable as children. Since that child can be a layout, it can takes as many children as you want."
|
||||
e "Un button toma otro visualizables como hijos. Dado que ese hijo puede ser un layout, puede tomar tantos hijos como desee."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:483
|
||||
translate spanish button_displayables_d01adde3:
|
||||
|
||||
# e "In many cases, buttons will be given text. To make that easier, there's the textbutton displayable that takes the text as an argument."
|
||||
e "En muchos casos, los botones recibirán texto. Para hacerlo más fácil, está el visualizable textbutton que toma el texto como un argumento."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:485
|
||||
translate spanish button_displayables_01c551b3:
|
||||
|
||||
# e "Since the textbutton displayable manages the style of the button text for you, it's the kind of button that's used most often in the default GUI."
|
||||
e "Dado que el visualizable textbutton administra el estilo del texto del botón por ti, es el tipo de botón que se usa con más frecuencia en la GUI predeterminada."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:498
|
||||
translate spanish button_displayables_6911fb9b:
|
||||
|
||||
# e "There's also the imagebutton, which takes displayables, one for each state the button can be in, and displays them as the button."
|
||||
e "También está el imagebutton, que toma visualizables, uno para cada estado en el que puede estar el botón, y los muestra como el botón."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:500
|
||||
translate spanish button_displayables_49720fa6:
|
||||
|
||||
# e "An imagebutton gives you the most control over what a button looks like, but is harder to translate and won't look as good if the game window is resized."
|
||||
e "Un imagebutton te da el mayor control sobre el aspecto de un botón, pero es más difícil de traducir y no se verá tan bien si se cambia el tamaño de la ventana del juego."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:522
|
||||
translate spanish button_displayables_e8d40fc8:
|
||||
|
||||
# e "Buttons take Window style properties, that are used to specify the background, margins, and padding. They also take Button-specific properties, like a sound to play on hover."
|
||||
e "Los botones toman las propiedades de estilo Window, que se utilizan para especificar el fondo, los márgenes y el relleno. También tienen propiedades específicas de los botones, como un sonido para reproducir cuando se enfocan."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:524
|
||||
translate spanish button_displayables_1e40e311:
|
||||
|
||||
# e "When used with a button, style properties can be given prefixes like idle and hover to make the property change with the button state."
|
||||
e "Cuando se usa con un botón, las propiedades de estilo pueden tener prefijos como idle y hover para hacer que la propiedad cambie con el estado del botón."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:526
|
||||
translate spanish button_displayables_220b020d:
|
||||
|
||||
# e "A text button also takes Text style properties, prefixed with text. These are applied to the text displayable it creates internally."
|
||||
e "Un botón de texto también toma las propiedades de estilo de texto, prefijadas con text. Estos se aplican al texto desplegable que crea internamente."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:558
|
||||
translate spanish button_displayables_b89d12aa:
|
||||
|
||||
# e "Of course, it's prety rare we'd ever customize a button in a screen like that. Instead, we'd create custom styles and tell Ren'Py to use them."
|
||||
e "Por supuesto, es muy raro que personalicemos un botón en una pantalla como esa. En su lugar, crearíamos estilos personalizados y le diríamos a Ren'Py que los use."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:577
|
||||
translate spanish bar_displayables_946746c2:
|
||||
|
||||
# e "The bar and vbar displayables are flexible displayables that show bars representing a value. The value can be static, animated, or adjustable by the player."
|
||||
e "Los visualizables bar y vbar son visualizables flexibles que muestran barras que representan un valor. El valor puede ser estático, animado o ajustable por el jugador."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:579
|
||||
translate spanish bar_displayables_af3a51b8:
|
||||
|
||||
# e "The value property gives a BarValue, which is an object that determines the bar's value and range. Here, a StaticValue sets the range to 100 and the value to 66, making a bar that's two thirds full."
|
||||
e "La propiedad value proporciona un BarValue, que es un objeto que determina el valor y el rango de la barra. Aquí, un StaticValue establece el rango en 100 y el valor en 66, haciendo que una barra esté dos tercios llena."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:581
|
||||
translate spanish bar_displayables_62f8b0ab:
|
||||
|
||||
# e "A list of all the BarValues that can be used is found {a=https://www.renpy.org/doc/html/screen_actions.html#bar-values}in the Ren'Py documentation{/a}."
|
||||
e "Una lista de todos los BarValues que se pueden usar se encuentra {a=https://www.renpy.org/doc/html/screen_actions.html#bar-values}en la documentación de Ren'Py{/a}."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:583
|
||||
translate spanish bar_displayables_5212eb0a:
|
||||
|
||||
# e "In this example, we give the frame the xsize property. If we didn't do that, the bar would expand to fill all available horizontal space."
|
||||
e "En este ejemplo, le damos frame la propiedad xsize. Si no hiciéramos eso, la barra se expandiría para llenar todo el espacio horizontal disponible."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:600
|
||||
translate spanish bar_displayables_67295018:
|
||||
|
||||
# e "There are a few different bar styles that are defined in the default GUI. The styles are selected by the style property, with the default selected by the value."
|
||||
e "Hay algunos estilos de barras diferentes que se definen en la GUI predeterminada. Los estilos son seleccionados por la propiedad de estilo, con el valor predeterminado seleccionado por el valor."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:602
|
||||
translate spanish bar_displayables_1b037b21:
|
||||
|
||||
# e "The top style is the 'bar' style. It's used to display values that the player can't adjust, like a life or progress bar."
|
||||
e "El estilo superior es el estilo 'bar'. Se utiliza para mostrar valores que el jugador no puede ajustar, como una barra de vida o de progreso."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:604
|
||||
translate spanish bar_displayables_c2aa4725:
|
||||
|
||||
# e "The middle stye is the 'slider' value. It's used for values the player is expected to adjust, like a volume preference."
|
||||
e "El estilo de en medio es el valor 'slider'. Se usa para los valores que se espera que el jugador ajuste, como una preferencia de volumen."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:606
|
||||
translate spanish bar_displayables_2fc44226:
|
||||
|
||||
# e "Finally, the bottom style is the 'scrollbar' style, which is used for horizontal scrollbars. When used as a scrollbar, the thumb in the center changes size to reflect the visible area of a viewport."
|
||||
e "Finalmente, el estilo inferior es el estilo 'scrollbar', que se usa para las barras de desplazamiento horizontal. Cuando se utiliza como una barra de desplazamiento, el thumb en el centro cambia de tamaño para reflejar el área visible de una ventana gráfica."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:623
|
||||
translate spanish bar_displayables_26eb88bf:
|
||||
|
||||
# e "The vbar displayable is similar to the bar displayable, except it uses vertical styles - 'vbar', 'vslider', and 'vscrollbar' - by default."
|
||||
e "EL visualizable vbar es similar al visualizable bar, excepto que usa estilos verticales: 'vbar', 'vslider' y 'vscrollbar' - de forma predeterminada."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:626
|
||||
translate spanish bar_displayables_11cf8af2:
|
||||
|
||||
# e "Bars take the Bar style properties, which can customize the look and feel greatly. Just look at the difference between the bar, slider, and scrollbar styles."
|
||||
e "Las baras toman las propiedades de estilo Bar, que pueden personalizar la apariencia enormemente. Solo mira la diferencia entre los estilos de bar, slider y scrollbar."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:635
|
||||
translate spanish imagemap_displayables_d62fad02:
|
||||
|
||||
# e "Imagemaps use two or more images to show buttons and bars. Let me start by showing you an example of an imagemap in action."
|
||||
e "Los Imagemaps utilizan dos o más imágenes para mostrar botones y barras. Permítame comenzar mostrándote un ejemplo de un Imagemap en acción."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:657
|
||||
translate spanish swimming_405542a5:
|
||||
|
||||
# e "You chose swimming."
|
||||
e "Elegiste la natación."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:659
|
||||
translate spanish swimming_264b5873:
|
||||
|
||||
# e "Swimming seems like a lot of fun, but I didn't bring my bathing suit with me."
|
||||
e "La natación parece muy divertida, pero no traje mi traje de baño."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:665
|
||||
translate spanish science_83e5c0cc:
|
||||
|
||||
# e "You chose science."
|
||||
e "Escogiste ciencia."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:667
|
||||
translate spanish science_319cdf4b:
|
||||
|
||||
# e "I've heard that some schools have a competitive science team, but to me research is something that can't be rushed."
|
||||
e "He oído que algunas escuelas tienen un equipo científico competitivo, pero para mí la investigación es algo que no se puede apresurar."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:672
|
||||
translate spanish art_d2a94440:
|
||||
|
||||
# e "You chose art."
|
||||
e "Escogiste arte."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:674
|
||||
translate spanish art_e6af6f1d:
|
||||
|
||||
# e "Really good background art is hard to make, which is why so many games use filtered photographs. Maybe you can change that."
|
||||
e "Realmente es difícil hacer una buena imagen de fondo, razón por la cual muchos juegos usan fotografías filtradas. Tal vez puedas cambiar eso."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:680
|
||||
translate spanish home_373ea9a5:
|
||||
|
||||
# e "You chose to go home."
|
||||
e "Elegiste ir a casa."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:686
|
||||
translate spanish imagemap_done_48eca0a4:
|
||||
|
||||
# e "Anyway..."
|
||||
e "Como sea"
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:691
|
||||
translate spanish imagemap_done_a60635a1:
|
||||
|
||||
# e "To demonstrate how imagemaps are put together, I'll show you the five images that make up a smaller imagemap."
|
||||
e "Para demostrar cómo se combinan los imagemaps, te mostraré las cinco imágenes que conforman un imagemaps más pequeño."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:697
|
||||
translate spanish imagemap_done_ac9631ef:
|
||||
|
||||
# e "The idle image is used for the background of the imagemap, for hotspot buttons that aren't focused or selected, and for the empty part of an unfocused bar."
|
||||
e "La imagen idle se usa para el fondo del mapa de imágenes, para los botones hotspot que no están enfocados o seleccionados, y para la parte vacía de una barra desenfocada."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:703
|
||||
translate spanish imagemap_done_123b5924:
|
||||
|
||||
# e "The hover image is used for hotspots that are focused but not selected, and for the empty part of a focused bar."
|
||||
e "La imagen hover se usa para zonas activas que están enfocadas pero no seleccionadas, y para la parte vacía de una barra enfocada."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:705
|
||||
translate spanish imagemap_done_37f538dc:
|
||||
|
||||
# e "Notice how both the bar and button are highlighted in this image. When we display them as part of a screen, only one of them will show up as focused."
|
||||
e "Observa cómo se resaltan tanto la barra como el botón en esta imagen. Cuando los mostramos como parte de una pantalla, solo uno de ellos aparecerá como enfocado."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:711
|
||||
translate spanish imagemap_done_c76b072d:
|
||||
|
||||
# e "Selected images like this selected_idle image are used for parts of the bar that are filled, and for selected buttons, like the current screen and a checked checkbox."
|
||||
e "Las imágenes seleccionadas como esta imagen selected_idle se utilizan para partes de la barra que se rellenan, y para los botones seleccionados, como la pantalla actual y una casilla de verificación marcada."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:717
|
||||
translate spanish imagemap_done_241a4112:
|
||||
|
||||
# e "Here's the selected_hover image. The button here will never be shown, since it will never be marked as selected."
|
||||
e "Aquí está la imagen selected_hover. El botón aquí nunca se mostrará, ya que nunca se marcará como seleccionado."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:723
|
||||
translate spanish imagemap_done_3d8f454c:
|
||||
|
||||
# e "Finally, an insensitive image can be given, which is used when a hotspot can't be interacted with."
|
||||
e "Finalmente, se puede dar una imagen insensitive, que se usa cuando no se puede interactuar con un hotspot."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:728
|
||||
translate spanish imagemap_done_ca286729:
|
||||
|
||||
# e "Imagemaps aren't limited to just images. Any displayable can be used where an image is expected."
|
||||
e "Los imagemap no se limitan solo a imágenes. Se puede usar cualquier visualizable donde se espera una imagen."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:743
|
||||
translate spanish imagemap_done_6060b17f:
|
||||
|
||||
# e "Here's an imagemap built using those five images. Now that it's an imagemap, you can interact with it if you want to."
|
||||
e "Aquí hay un imagemap construido usando esas cinco imágenes. Ahora que es un imagemap, puedes interactuar con él si lo deseas."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:755
|
||||
translate spanish imagemap_done_c817794d:
|
||||
|
||||
# e "To make this a little more concise, we can replace the five images with the auto property, which replaces '%%s' with 'idle', 'hover', 'selected_idle', 'selected_hover', or 'insensitive' as appropriate."
|
||||
e "Para hacer esto un poco más conciso, podemos reemplazar las cinco imágenes con la propiedad automática, que reemplaza '%%s' con 'idle', 'hover', 'selected_idle', 'selected_hover', o 'insensitive' según corresponda."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:757
|
||||
translate spanish imagemap_done_c1ed91b8:
|
||||
|
||||
# e "Feel free to omit the selected and insensitive images if your game doesn't need them. Ren'Py will use the idle or hover images to replace them."
|
||||
e "Siéntete libre de omitir las imágenes selected e insensitive si tu juego no las necesita. Ren'Py utilizará las imágenes idle o hover para reemplazarlos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:759
|
||||
translate spanish imagemap_done_166f75db:
|
||||
|
||||
# e "The hotspot and hotbar statements describe areas of the imagemap that should act as buttons or bars, respectively."
|
||||
e "Las sentencias hotspot y hotbar describen áreas del imagemap que deben actuar como botones o barras, respectivamente."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:761
|
||||
translate spanish imagemap_done_becb9688:
|
||||
|
||||
# e "Both take the coordinates of the area, in (x, y, width, height) format."
|
||||
e "Ambas toman las coordenadas del área, en formato (x, y, ancho, alto)."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:763
|
||||
translate spanish imagemap_done_fd56baa2:
|
||||
|
||||
# e "A hotspot takes an action that is run when the hotspot is activated. It can also take actions that are run when it's hovered and unhovered, just like a button can."
|
||||
e "Un hotspot toma una acción que se ejecuta cuando el hotspot está activado. También puede tomar acciones que se ejecutan cuando está enfocado y no enfocado, al igual que un botón."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:765
|
||||
translate spanish imagemap_done_5660a6a2:
|
||||
|
||||
# e "A hotbar takes a BarValue object that describes how full the bar is, and the range of values the bar should display, just like a bar and vbar does."
|
||||
e "Una hotbar toma un objeto BarValue que describe qué tan llena está la barra y el rango de valores que debe mostrar la barra, tal como lo hace una barra y una barra vbar."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:772
|
||||
translate spanish imagemap_done_10496a29:
|
||||
|
||||
# e "A useful pattern is to define a screen with an imagemap that has hotspots that jump to labels, and call that using the call screen statement."
|
||||
e "Un patrón útil es definir una pantalla con un imagemap que tiene hotspots que saltan a las etiquetas y llamarla usando la sentencia screen."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:774
|
||||
translate spanish imagemap_done_dcb45224:
|
||||
|
||||
# e "That's what we did in the school example I showed before. Here's the script for it. It's long, but the imagemap itself is fairly simple."
|
||||
e "Eso es lo que hicimos en el ejemplo de la escuela que mostré antes. Aquí está el guión para ello. Es largo, pero el imagemap en sí es bastante simple."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:778
|
||||
translate spanish imagemap_done_5b5bc5e5:
|
||||
|
||||
# e "Imagemaps have pluses and minuses. On one hand, they are easy for a designer to create, and can look very good. At the same time, they can be hard to translate, and text baked into images may be blurry when the window is scaled."
|
||||
e "Imagemaps tienen ventajas y desventajas. Por un lado, son fáciles de crear para un diseñador y pueden verse muy bien. Al mismo tiempo, pueden ser difíciles de traducir, y el texto incrustado en las imágenes puede aparecer borroso cuando se escala la ventana."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:780
|
||||
translate spanish imagemap_done_b6cebf2b:
|
||||
|
||||
# e "It's up to you and your team to decide if imagemaps are right for your project."
|
||||
e "Depende de ti y tu equipo decidir si los imagemaps son adecuados para su proyecto."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:787
|
||||
translate spanish viewport_displayables_e509d50d:
|
||||
|
||||
# e "Sometimes, you'll want to display something bigger than the screen. That's what the viewport displayable is for."
|
||||
e "A veces, querrá mostrar algo más grande que la pantalla. Para eso está el visualizable viewport."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:803
|
||||
translate spanish viewport_displayables_9853b0e3:
|
||||
|
||||
# e "Here's an example of a simple viewport, used to display a single image that's far bigger than the screen. Since the viewport will expand to the size of the screen, we use the xysize property to make it smaller."
|
||||
e "Este es un ejemplo de un viewport simple, que se usa para mostrar una imagen única que es mucho más grande que la pantalla. Dado que el viewport ampliará al tamaño de la pantalla, usamos la propiedad xysize para hacerla más pequeña."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:805
|
||||
translate spanish viewport_displayables_778668c8:
|
||||
|
||||
# e "By default the viewport can't be moved, so we give the draggable, mousewheel, and arrowkeys properties to allow it to be moved in multiple ways."
|
||||
e "Por defecto, el viewport no se puede mover, por lo que le damos a las propiedades draggable, mousewheel y arrowkeys para permitir que se mueva de varias maneras."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:820
|
||||
translate spanish viewport_displayables_bbd63377:
|
||||
|
||||
# e "When I give the viewport the edgescroll property, the viewport automatically scrolls when the mouse is near its edges. The two numbers are the size of the edges, and the speed in pixels per second."
|
||||
e "Cuando le doy al viewport la propiedad edgescroll, la ventana se desplaza automáticamente cuando el mouse está cerca de sus bordes. Los dos números son el tamaño de los bordes y la velocidad en píxeles por segundo."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:839
|
||||
translate spanish viewport_displayables_7c4678ee:
|
||||
|
||||
# e "Giving the viewport the scrollbars property surrounds it with scrollbars. The scrollbars property can take 'both', 'horizontal', and 'vertical' as values."
|
||||
e "Al darle al viewport la propiedad de scrollbars la rodea con barras de desplazamiento. La propiedad scrollbars puede tomar 'ambos', 'horizontal' y 'vertical' como valores."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:841
|
||||
translate spanish viewport_displayables_197953b5:
|
||||
|
||||
# e "The spacing property controls the space between the viewport and its scrollbars, in pixels."
|
||||
e "La propiedad spacing controla el espacio entre la ventana gráfica y sus barras de desplazamiento, en píxeles."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:864
|
||||
translate spanish viewport_displayables_54dd6e7b:
|
||||
|
||||
# e "The xinitial and yinitial properties set the initial amount of scrolling, as a fraction of the amount that can be scrolled."
|
||||
e "Las propiedades xinitial y yinitial establecen la cantidad inicial de desplazamiento, como una fracción de la cantidad que se puede desplazar."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:885
|
||||
translate spanish viewport_displayables_c047efb5:
|
||||
|
||||
# e "Finally, there's the child_size property. To explain what it does, I first have to show you what happens when we don't have it."
|
||||
e "Finalmente, está la propiedad child_size. Para explicar lo que hace, primero tengo que mostrarte lo que sucede cuando no lo tenemos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:887
|
||||
translate spanish viewport_displayables_c563019f:
|
||||
|
||||
# e "As you can see, the text wraps. That's because Ren'Py is offering it space that isn't big enough."
|
||||
e "Como puedes ver, el texto se envuelve. Eso es porque Ren'Py le está ofreciendo un espacio que no es lo suficientemente grande."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:909
|
||||
translate spanish viewport_displayables_4bcf0ad0:
|
||||
|
||||
# e "When we give the screen a child_size, it offers more space to its children, allowing scrolling. It takes a horizontal and vertical size. If one component is None, it takes the size of the viewport."
|
||||
e "Cuando le damos a la pantalla un child_size, ofrece más espacio para sus hijos, lo que permite el desplazamiento. Toma un tamaño horizontal y vertical. Si un componente es None, toma el tamaño del viewport."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:936
|
||||
translate spanish viewport_displayables_ae4ff821:
|
||||
|
||||
# e "Finally, there's the vpgrid displayable. It combines a viewport and a grid into a single displayable, except it's more efficient than either, since it doesn't have to draw every child."
|
||||
e "Finalmente, está el visualizable vpgrid. Combina un viewport y una malla en una única pantalla, excepto que es más eficiente que cualquiera de los dos, ya que no tiene que dibujar a todos los hijos."
|
||||
|
||||
# game/tutorial_screen_displayables.rpy:938
|
||||
translate spanish viewport_displayables_71fa0b8f:
|
||||
|
||||
# e "It takes the cols and rows properties, which give the number of rows and columns of children. If one is omitted, Ren'Py figures it out from the other and the number of children."
|
||||
e "Toma las propiedades de columnas y filas, que dan el número de filas y columnas de hijos. Si se omite uno, Ren'Py lo calcula a partir del otro y el número de hijos."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Common properties all displayables share."
|
||||
new "Todas las propiedades comunes que comparten los visualizables."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Adding images and other displayables."
|
||||
new "Añadir imágenes y otros visualizables."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Text."
|
||||
new "Text."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Boxes and other layouts."
|
||||
new "Boxes y otros layouts."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Windows and frames."
|
||||
new "Windows y frames."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Buttons."
|
||||
new "Buttons."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Bars."
|
||||
new "Bars."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Viewports."
|
||||
new "Viewports."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "Imagemaps."
|
||||
new "Imagemaps."
|
||||
|
||||
# tutorial_screen_displayables.rpy:9
|
||||
old "That's all for now."
|
||||
new "Eso es todo por ahora."
|
||||
|
||||
# tutorial_screen_displayables.rpy:55
|
||||
old "This uses position properties."
|
||||
new "Esto utiliza propiedades de posición."
|
||||
|
||||
# tutorial_screen_displayables.rpy:63
|
||||
old "And the world turned upside down..."
|
||||
new "Y el mundo se puso al revés..."
|
||||
|
||||
# tutorial_screen_displayables.rpy:115
|
||||
old "Flight pressure in tanks."
|
||||
new "Presión de vuelo en tanques."
|
||||
|
||||
# tutorial_screen_displayables.rpy:116
|
||||
old "On internal power."
|
||||
new "Energía interna encendida"
|
||||
|
||||
# tutorial_screen_displayables.rpy:117
|
||||
old "Launch enabled."
|
||||
new "Lanzamiento habilitado."
|
||||
|
||||
# tutorial_screen_displayables.rpy:118
|
||||
old "Liftoff!"
|
||||
new "¡Despegar!"
|
||||
|
||||
# tutorial_screen_displayables.rpy:232
|
||||
old "The answer is [answer]."
|
||||
new "La respuesta es [answer]."
|
||||
|
||||
# tutorial_screen_displayables.rpy:244
|
||||
old "Text tags {color=#c8ffc8}work{/color} in screens."
|
||||
new "Las etiquetas de texto {color=#c8ffc8}funcionan{/color} en las pantallas."
|
||||
|
||||
# tutorial_screen_displayables.rpy:336
|
||||
old "Bigger"
|
||||
new "Más grande"
|
||||
|
||||
# tutorial_screen_displayables.rpy:401
|
||||
old "This is a screen."
|
||||
new "Esta es una pantalla."
|
||||
|
||||
# tutorial_screen_displayables.rpy:402
|
||||
old "Okay"
|
||||
new "Aceptar"
|
||||
|
||||
# tutorial_screen_displayables.rpy:440
|
||||
old "You clicked the button."
|
||||
new "Hiciste clic en el botón."
|
||||
|
||||
# tutorial_screen_displayables.rpy:441
|
||||
old "Click me."
|
||||
new "Haz click en mí"
|
||||
|
||||
# tutorial_screen_displayables.rpy:453
|
||||
old "You hovered the button."
|
||||
new "En focaste el botón"
|
||||
|
||||
# tutorial_screen_displayables.rpy:454
|
||||
old "You unhovered the button."
|
||||
new "Desenfocaste el botón"
|
||||
|
||||
# tutorial_screen_displayables.rpy:470
|
||||
old "Heal"
|
||||
new "Curar"
|
||||
|
||||
# tutorial_screen_displayables.rpy:479
|
||||
old "This is a textbutton."
|
||||
new "Este es un textbutton."
|
||||
|
||||
# tutorial_screen_displayables.rpy:539
|
||||
old "Or me."
|
||||
new "O en mí."
|
||||
|
||||
# tutorial_screen_displayables.rpy:541
|
||||
old "You clicked the other button."
|
||||
new "Hiciste clic en el otro botón."
|
||||
|
||||
# tutorial_screen_displayables.rpy:880
|
||||
old "This text is wider than the viewport."
|
||||
new "Este texto es más ancho que el viewport."
|
||||
|
||||
@@ -0,0 +1,593 @@
|
||||
|
||||
# game/tutorial_screens.rpy:165
|
||||
translate spanish tutorial_screens_2faa22e5:
|
||||
|
||||
# e "Screens are the most powerful part of Ren'Py. Screens let you customize the out-of-game interface, and create new in-game interface components."
|
||||
e "Las pantallas(Screens) son la parte más poderosa de Ren'Py. Las pantallas le permiten personalizar la interfaz fuera del juego y crear nuevos componentes de interfaz dentro del juego."
|
||||
|
||||
# game/tutorial_screens.rpy:171
|
||||
translate spanish screens_menu_7f31d730:
|
||||
|
||||
# e "What would you like to know about screens?" nointeract
|
||||
e "¿Qué te gustaría saber sobre las pantallas?" nointeract
|
||||
|
||||
# game/tutorial_screens.rpy:201
|
||||
translate spanish screens_demo_115a4b8f:
|
||||
|
||||
# e "Screens are how we create the user interface in Ren'Py. With the exception of images and transitions, everything you see comes from a screen."
|
||||
e "Las pantallas son cómo creamos la interfaz de usuario en Ren'Py. Con la excepción de imágenes y transiciones, todo lo que ves viene de una pantalla."
|
||||
|
||||
# game/tutorial_screens.rpy:203
|
||||
translate spanish screens_demo_ce100e07:
|
||||
|
||||
# e "When I'm speaking to you, I'm using the 'say' screen. It's responsible for taking dialogue and presenting it to the player."
|
||||
e "Cuando te hablo, estoy usando la pantalla 'say'. Es responsable de decir dialogos y presentarlo al jugador."
|
||||
|
||||
# game/tutorial_screens.rpy:205
|
||||
translate spanish screens_demo_1bdfb4bd:
|
||||
|
||||
# e "And when the menu statement displays an in-game choice, the 'choice' screen is used. Got it?" nointeract
|
||||
e "Y cuando la sentencia menu muestra una opción dentro del juego, se usa la pantalla de 'choice'. ¿Entendido?" nointeract
|
||||
|
||||
# game/tutorial_screens.rpy:215
|
||||
translate spanish screens_demo_31a20e24:
|
||||
|
||||
# e "Text input uses the 'input' screen, NVL mode uses the 'nvl' screen, and so on."
|
||||
e "La entrada de texto usa la pantalla de 'input', el modo NVL usa la pantalla 'nvl', y así sucesivamente."
|
||||
|
||||
# game/tutorial_screens.rpy:217
|
||||
translate spanish screens_demo_5a5aa2d5:
|
||||
|
||||
# e "More than one screen can be displayed at once. For example, the buttons at the bottom - Back, History, Skip, and so on - are all displayed by a quick_menu screen that's shown all of the time."
|
||||
e "Se puede visualizar más de una pantalla a la vez. Por ejemplo, los botones en la parte inferior (Atrás, Historial, Saltar, etc.) se muestran en una pantalla de menú rápido que se muestra todo el tiempo."
|
||||
|
||||
# game/tutorial_screens.rpy:219
|
||||
translate spanish screens_demo_58d48fde:
|
||||
|
||||
# e "There are a lot of special screens, like 'main_menu', 'load', 'save', and 'preferences'. Rather than list them all here, I'll {a=https://www.renpy.org/doc/html/screen_special.html}send you to the documentation{/a}."
|
||||
e "Hay muchas pantallas especiales, como 'main_menu', 'load', 'save', y 'preferences'. En lugar de enumerarlos a todos aquí, {a=https://www.renpy.org/doc/html/screen_special.html}te enviaré a la documentación{/a}."
|
||||
|
||||
# game/tutorial_screens.rpy:221
|
||||
translate spanish screens_demo_27476d11:
|
||||
|
||||
# e "In a newly created project, all these screens live in screens.rpy. You can edit that file in order to change them."
|
||||
e "En un proyecto recién creado, todas estas pantallas viven en screens.rpy. Puedes editar ese archivo para cambiarlas."
|
||||
|
||||
# game/tutorial_screens.rpy:223
|
||||
translate spanish screens_demo_a699b1cb:
|
||||
|
||||
# e "You aren't limited to these screens either. In Ren'Py, you can make your own screens, and use them for your game's interface."
|
||||
e "Tampoco estás limitado a estas pantallas. En Ren'Py, puedes crear tus propias pantallas y usarlas para la interfaz de tu juego."
|
||||
|
||||
# game/tutorial_screens.rpy:230
|
||||
translate spanish screens_demo_a136e191:
|
||||
|
||||
# e "For example, in an RPG like visual novel, a screen can display the player's statistics."
|
||||
e "Por ejemplo, en un RPG como novela visual, una pantalla puede mostrar las estadísticas del jugador."
|
||||
|
||||
# game/tutorial_screens.rpy:234
|
||||
translate spanish screens_demo_1f50f3d3:
|
||||
|
||||
# e "Which reminds me, I should probably heal you."
|
||||
e "Lo que me recuerda, probablemente debería curarte."
|
||||
|
||||
# game/tutorial_screens.rpy:241
|
||||
translate spanish screens_demo_8a54de7a:
|
||||
|
||||
# e "Complex screens can be the basis of whole game mechanics. A stats screen like this can be the basis of dating and life-sims."
|
||||
e "Las pantallas complejas pueden ser la base de toda la mecánica del juego. Una pantalla de estadísticas como esta puede ser la base de simuladores de citas y vida."
|
||||
|
||||
# game/tutorial_screens.rpy:246
|
||||
translate spanish screens_demo_62c184f8:
|
||||
|
||||
# e "While screens might be complex, they're really just the result of a lot of simple parts working together to make something larger than all of them."
|
||||
e "Si bien las pantallas pueden ser complejas, en realidad son solo el resultado de muchas partes simples que trabajan juntas para hacer algo más grande que todas ellas."
|
||||
|
||||
# game/tutorial_screens.rpy:265
|
||||
translate spanish screens_showing_1b51e9a4:
|
||||
|
||||
# e "Here's an example of a very simple screen. The screen statement is used to tell Ren'Py this is a screen, and it's name is simple_screen."
|
||||
e "Aquí hay un ejemplo de una pantalla muy simple. La sentencia screen se usa para decirle a Ren'Py que esto es una pantalla, y su nombre es simple_screen."
|
||||
|
||||
# game/tutorial_screens.rpy:267
|
||||
translate spanish screens_showing_5a6bbad0:
|
||||
|
||||
# e "Inside the screen statement, lines introduces displayables such as frame, vbox, text, and textbutton; or properties like action, xalign, and ypos."
|
||||
e "Dentro de la sentencia screen, las líneas introducen visualizables como frame, vbox, text y textbutton; o propiedades como action, xalign, y ypos."
|
||||
|
||||
# game/tutorial_screens.rpy:272
|
||||
translate spanish screens_showing_ae40755c:
|
||||
|
||||
# e "I'll work from the inside out to describe the statements. But first, I'll show the screen so you can see it in action."
|
||||
e "Trabajaré desde adentro hacia afuera para describir las sentencias. Pero primero, te mostraré la pantalla para que puedas verla en acción."
|
||||
|
||||
# game/tutorial_screens.rpy:274
|
||||
translate spanish screens_showing_bc320819:
|
||||
|
||||
# e "The text statement is used to display the text provided."
|
||||
e "La sentencia text se utiliza para mostrar el texto proporcionado."
|
||||
|
||||
# game/tutorial_screens.rpy:276
|
||||
translate spanish screens_showing_64f23380:
|
||||
|
||||
# e "The textbutton statement introduces a button that can be clicked. When the button is clicked, the provided action is run."
|
||||
e "La sentencia textbutton introduce un botón en el que se puede hacer clic. Cuando se hace clic en el botón, se ejecuta la acción proporcionada."
|
||||
|
||||
# game/tutorial_screens.rpy:278
|
||||
translate spanish screens_showing_e8f68c08:
|
||||
|
||||
# e "Both are inside a vbox, which means vertical box, statement - that places the text on top of the button."
|
||||
e "Ambos están dentro de un vbox, lo que significa un cuadro vertical, sentencia, que coloca el texto sobre el botón."
|
||||
|
||||
# game/tutorial_screens.rpy:280
|
||||
translate spanish screens_showing_7e48fc22:
|
||||
|
||||
# e "And that is inside a frame that provides the background and borders. The frame has an at property that takes a transform giving its position."
|
||||
e "Y eso está dentro de un marco que proporciona el fondo y los bordes. El marco tiene una propiedad at que toma una transformación dando su posición."
|
||||
|
||||
# game/tutorial_screens.rpy:286
|
||||
translate spanish screens_showing_80425bf3:
|
||||
|
||||
# e "There are a trio of statements that are used to display screens."
|
||||
e "Hay un trío de sentencias que se utilizan para mostrar pantallas."
|
||||
|
||||
# game/tutorial_screens.rpy:291
|
||||
translate spanish screens_showing_7d2deb37:
|
||||
|
||||
# e "The first is the show screen statement, which displays a screen and lets Ren'Py keep going."
|
||||
e "La primera es la sentencia de pantalla show, que muestra una pantalla y le permite a Ren'Py seguir adelante."
|
||||
|
||||
# game/tutorial_screens.rpy:293
|
||||
translate spanish screens_showing_7626dc8b:
|
||||
|
||||
# e "The screen will stay shown until it is hidden."
|
||||
e "La pantalla permanecerá mostrada hasta que se oculte."
|
||||
|
||||
# game/tutorial_screens.rpy:297
|
||||
translate spanish screens_showing_c79038a4:
|
||||
|
||||
# e "Hiding a screen is done with the hide screen statement."
|
||||
e "La ocultación de una pantalla se hace con la sentencia de pantalla hide."
|
||||
|
||||
# game/tutorial_screens.rpy:301
|
||||
translate spanish screens_showing_8f78a97d:
|
||||
|
||||
# e "The call screen statement stops Ren'Py from executing script until the screen either returns a value, or jumps the script somewhere else."
|
||||
e "La sentencia de pantalla call impide que Ren'Py ejecute el script hasta que la pantalla devuelva un valor o salte el guión en otro lugar."
|
||||
|
||||
# game/tutorial_screens.rpy:303
|
||||
translate spanish screens_showing_b52e420c:
|
||||
|
||||
# e "Since we can't display dialogue at the same time, you'll have to click 'Okay' to continue."
|
||||
e "Como no podemos mostrar el diálogo al mismo tiempo, deberás hacer clic en 'Aceptar' para continuar."
|
||||
|
||||
# game/tutorial_screens.rpy:310
|
||||
translate spanish screens_showing_c5ca730f:
|
||||
|
||||
# e "When a call screen statement ends, the screen is automatically hidden."
|
||||
e "Cuando una sentencia screen call finaliza, la pantalla se oculta automáticamente."
|
||||
|
||||
# game/tutorial_screens.rpy:312
|
||||
translate spanish screens_showing_a38d1702:
|
||||
|
||||
# e "Generally, you use show screen to show overlays that are up all the time, and call screen to show screens the player interacts with for a little while."
|
||||
e "Por lo general, usas show screen para mostrar overlays que están arriba todo el tiempo, y la Call screen para mostrar las pantallas con las que el jugador interactúa por un tiempo."
|
||||
|
||||
# game/tutorial_screens.rpy:335
|
||||
translate spanish screens_parameters_0666043d:
|
||||
|
||||
# e "Here's an example of a screen that takes three parameters. The message parameter is a message to show, while the okay and cancel actions are run when the appropriate button is chosen."
|
||||
e "Aquí hay un ejemplo de una pantalla que toma tres parámetros. El parámetro message es un mensaje para mostrar, mientras que las acciones de aceptar y cancelar se ejecutan cuando se elige el botón apropiado."
|
||||
|
||||
# game/tutorial_screens.rpy:337
|
||||
translate spanish screens_parameters_cf95b914:
|
||||
|
||||
# e "While the message parameter always has to be supplied, the okay and cancel parameters have default values that are used if no argument is given."
|
||||
e "Si bien siempre se debe proporcionar el parámetro message, los parámetros de aceptar y cancelar tienen valores predeterminados que se utilizan si no se proporciona ningún argumento."
|
||||
|
||||
# game/tutorial_screens.rpy:339
|
||||
translate spanish screens_parameters_4ce03111:
|
||||
|
||||
# e "Each parameter is a variable that is defined inside the screen. Inside the screen, these variables take priority over those used in the rest of Ren'Py."
|
||||
e "Cada parámetro es una variable que se define dentro de screen. Dentro de screen, estas variables tienen prioridad sobre las utilizadas en el resto de Ren'Py."
|
||||
|
||||
# game/tutorial_screens.rpy:343
|
||||
translate spanish screens_parameters_106c2a04:
|
||||
|
||||
# e "When a screen is shown, arguments can be supplied for each of the parameters. Arguments can be given by position or by name."
|
||||
e "Cuando se muestra una pantalla, se pueden proporcionar argumentos para cada uno de los parámetros. Los argumentos pueden ser dados por posición o por nombre."
|
||||
|
||||
# game/tutorial_screens.rpy:350
|
||||
translate spanish screens_parameters_12ac92d4:
|
||||
|
||||
# e "Parameters let us change what a screen displays, simply by re-showing it with different arguments."
|
||||
e "Los parámetros nos permiten cambiar lo que muestra una pantalla, simplemente volviéndola a mostrar con diferentes argumentos."
|
||||
|
||||
# game/tutorial_screens.rpy:357
|
||||
translate spanish screens_parameters_d143a994:
|
||||
|
||||
# e "The call screen statement can also take arguments, much like show screen does."
|
||||
e "La sentencia de pantalla call también puede tomar argumentos, como lo hace la show screen."
|
||||
|
||||
# game/tutorial_screens.rpy:369
|
||||
translate spanish screens_properties_423246a2:
|
||||
|
||||
# e "There are a few properties that can be applied to a screen itself."
|
||||
e "Hay algunas propiedades que se pueden aplicar a una pantalla en sí."
|
||||
|
||||
# game/tutorial_screens.rpy:380
|
||||
translate spanish screens_properties_4fde164e:
|
||||
|
||||
# e "When the modal property is true, you can't interact with things beneath the screen. You'll have to click 'Close This Screen' before you can continue."
|
||||
e "Cuando la propiedad modal es True, no puedes interactuar con cosas debajo de la pantalla. Tendrá que hacer clic en 'Cerrar esta pantalla' antes de poder continuar."
|
||||
|
||||
# game/tutorial_screens.rpy:398
|
||||
translate spanish screens_properties_550c0bea:
|
||||
|
||||
# e "When a screen has the tag property, it's treated like the tag part of an image name. Here, I'm showing a_tag_screen."
|
||||
e "Cuando una pantalla tiene la propiedad tag, se trata como la parte de etiqueta de un nombre de imagen. Aquí, estoy mostrando a_tag_screen."
|
||||
|
||||
# game/tutorial_screens.rpy:402
|
||||
translate spanish screens_properties_4fcf8af8:
|
||||
|
||||
# e "When I show b_tag_screen, it replaces a_tag_screen."
|
||||
e "Cuando muestro b_tag_screen, reemplaza a_tag_screen."
|
||||
|
||||
# game/tutorial_screens.rpy:404
|
||||
translate spanish screens_properties_7ed5a791:
|
||||
|
||||
# e "This is useful in the game and main menus, where you want the load screen to replace the preferences screen. By default, all those screens have tag menu."
|
||||
e "Esto es útil en el juego y en los menús principales, donde desea que la pantalla de carga reemplace la pantalla de preferencias. Por defecto, todas esas pantallas tienen etiqueta de menú."
|
||||
|
||||
# game/tutorial_screens.rpy:408
|
||||
translate spanish screens_properties_5d51bd1e:
|
||||
|
||||
# e "For some reason, tag takes a name, and not an expression. It's too late to change it."
|
||||
e "Por alguna razón, la etiqueta toma un nombre, y no una expresión. Es demasiado tarde para cambiarlo."
|
||||
|
||||
# game/tutorial_screens.rpy:432
|
||||
translate spanish screens_properties_6706e266:
|
||||
|
||||
# e "The zorder property controls the order in which screens overlap each other. The larger the zorder number, the closer the screen is to the player."
|
||||
e "La propiedad zorder controla el orden en que las pantallas se superponen entre sí. Cuanto mayor sea el número zorder, más cerca estará la pantalla del jugador."
|
||||
|
||||
# game/tutorial_screens.rpy:434
|
||||
translate spanish screens_properties_f7a2c73d:
|
||||
|
||||
# e "By default, a screen has a zorder of 0. When two screens have the same zorder number, the screen that is shown second is closer to the player."
|
||||
e "De forma predeterminada, una pantalla tiene un zorder de 0. Cuando dos pantallas tienen el mismo número de zorder, la pantalla que se muestra en segundo lugar está más cerca del jugador."
|
||||
|
||||
# game/tutorial_screens.rpy:454
|
||||
translate spanish screens_properties_78433eb8:
|
||||
|
||||
# e "The variant property selects a screen based on the properties of the device it's running on."
|
||||
e "La propiedad variant selecciona una pantalla basada en las propiedades del dispositivo en el que se está ejecutando."
|
||||
|
||||
# game/tutorial_screens.rpy:456
|
||||
translate spanish screens_properties_e6db6d02:
|
||||
|
||||
# e "In this example, the first screen will be used for small devices like telephones, and the other screen will be used for tablets and computers."
|
||||
e "En este ejemplo, la primera pantalla se usará para dispositivos pequeños como teléfonos, y la otra pantalla se usará para tabletas y computadoras."
|
||||
|
||||
# game/tutorial_screens.rpy:475
|
||||
translate spanish screens_properties_d21b5500:
|
||||
|
||||
# e "Finally, the style_prefix property specifies a prefix that's applied to the styles in the screen."
|
||||
e "Finalmente, la propiedad style_prefix especifica un prefijo que se aplica a los estilos en la pantalla."
|
||||
|
||||
# game/tutorial_screens.rpy:477
|
||||
translate spanish screens_properties_560ca08a:
|
||||
|
||||
# e "When the 'red' prefix is given, the frame gets the 'red_frame' style, and the text gets the 'red_text' style."
|
||||
e "Cuando se da el prefijo 'red', el marco obtiene el estilo 'red_frame', y el texto recibe el estilo 'red_text'."
|
||||
|
||||
# game/tutorial_screens.rpy:479
|
||||
translate spanish screens_properties_c7ad3a8e:
|
||||
|
||||
# e "This can save a lot of typing when styling screens with many displayables in them."
|
||||
e "Esto puede ahorrar una gran cantidad de escritura al diseñar pantallas con muchos visualizables en ellas."
|
||||
|
||||
# game/tutorial_screens.rpy:491
|
||||
translate spanish screens_control_4a1d8d7c:
|
||||
|
||||
# e "The screen language has a few statements that do things other than show displayables. If you haven't seen the section on {a=jump:warp_screen_displayables}Screen Displayables{/a} yet, you might want to check it out, then come back here."
|
||||
e "El lenguaje de pantallas tiene algunas sentencias que hacen cosas distintas a mostrar visualizables. Si no has visto la sección en {a=jump:warp_screen_displayables}Visualizables Screen{/a} todavía, es posible que desees revisarla y luego volver aquí."
|
||||
|
||||
# game/tutorial_screens.rpy:503
|
||||
translate spanish screens_control_0e939050:
|
||||
|
||||
# e "The python statement works just about the same way it does in the script. A single line of Python is introduced with a dollar sign. This line is run each time the screen updates."
|
||||
e "La sentencia de python funciona de la misma manera que lo hace en el script. Una sola línea de Python se introduce con un signo de dólar. Esta línea se ejecuta cada vez que la pantalla se actualiza."
|
||||
|
||||
# game/tutorial_screens.rpy:518
|
||||
translate spanish screens_control_6334650a:
|
||||
|
||||
# e "Similarly, the python statement introduces an indented block of python statements. But there is one big difference in Python in screens and Python in scripts."
|
||||
e "De manera similar, la sentencia de python introduce un bloque sangrado de sentencias de python. Pero hay una gran diferencia en Python en pantallas y Python en scripts."
|
||||
|
||||
# game/tutorial_screens.rpy:520
|
||||
translate spanish screens_control_ba8f5f13:
|
||||
|
||||
# e "The Python you use in screens isn't allowed to have side effects. That means that it can't do things like change the value of a variable."
|
||||
e "El Python que usas en las pantallas no puede tener efectos secundarios. Eso significa que no puede hacer cosas como cambiar el valor de una variable."
|
||||
|
||||
# game/tutorial_screens.rpy:522
|
||||
translate spanish screens_control_f75fa254:
|
||||
|
||||
# e "The reason for this is that Ren'Py will run a screen, and the Python in it, during screen prediction."
|
||||
e "La razón de esto es que Ren'Py ejecutará una pantalla, y Python en ella, durante la predicción de la pantalla."
|
||||
|
||||
# game/tutorial_screens.rpy:536
|
||||
translate spanish screens_control_40c12afa:
|
||||
|
||||
# e "The default statement lets you set the value of a screen variable the first time the screen runs. This value can be changed with the SetScreenVariable and ToggleScreenVariable actions."
|
||||
e "La sentencia default te permite establecer el valor de una variable de pantalla la primera vez que se ejecuta la pantalla. Este valor se puede cambiar con las acciones SetScreenVariable y ToggleScreenVariable."
|
||||
|
||||
# game/tutorial_screens.rpy:538
|
||||
translate spanish screens_control_39e0f7e6:
|
||||
|
||||
# e "The default statement differs from the Python statement in that it is only run once. Python runs each time the screen updates, and hence the variable would never change value."
|
||||
e "La sentencia default se diferencia de la sentencia Python en que solo se ejecuta una vez. Python se ejecuta cada vez que la pantalla se actualiza y, por lo tanto, la variable nunca cambiará de valor."
|
||||
|
||||
# game/tutorial_screens.rpy:557
|
||||
translate spanish screens_control_87a75fe7:
|
||||
|
||||
# e "The if statement works like it does in script, running one block if the condition is true and another if the condition is false."
|
||||
e "La sentencia if funciona igual que en el script, ejecutando un bloque si la condición es verdadera y otra si la condición es falsa."
|
||||
|
||||
# game/tutorial_screens.rpy:572
|
||||
translate spanish screens_control_6a8c07f6:
|
||||
|
||||
# e "The for statement takes a list of values, and iterates through them, running the block inside the for loop with the variable bound to each list item."
|
||||
e "La sentencia for toma una lista de valores y los repite, ejecutando el bloque dentro del bucle for con la variable vinculada a cada elemento de la lista."
|
||||
|
||||
# game/tutorial_screens.rpy:588
|
||||
translate spanish screens_control_f7b755fa:
|
||||
|
||||
# e "The on and key statements probably only make sense at the top level of the screen."
|
||||
e "Las sentencias on y key probablemente solo tengan sentido en el nivel superior de la pantalla."
|
||||
|
||||
# game/tutorial_screens.rpy:590
|
||||
translate spanish screens_control_328b0676:
|
||||
|
||||
# e "The on statement makes the screen run an action when an event occurs. The 'show' event happens when the screen is first shown, and the 'hide' event happens when it is hidden."
|
||||
e "La sentencia on hace que la pantalla ejecute una acción cuando ocurre un evento. El evento 'show' ocurre cuando se muestra la pantalla por primera vez, y el evento 'hide' ocurre cuando se oculta."
|
||||
|
||||
# game/tutorial_screens.rpy:592
|
||||
translate spanish screens_control_6768768b:
|
||||
|
||||
# e "The key event runs an event when a key is pressed."
|
||||
e "El evento key ejecuta un evento cuando se presiona una tecla."
|
||||
|
||||
# game/tutorial_screens.rpy:600
|
||||
translate spanish screen_use_c6a20a16:
|
||||
|
||||
# e "The screen language use statement lets you include a screen inside another. This can be useful to prevent duplication inside screens."
|
||||
e "La sentencia use del lenguaje de pantalla te permite incluir una pantalla dentro de otra. Esto puede ser útil para evitar la duplicación dentro de las pantallas."
|
||||
|
||||
# game/tutorial_screens.rpy:616
|
||||
translate spanish screen_use_95a34d3a:
|
||||
|
||||
# e "Take for example this screen, which shows two stat entries. There's already a lot of duplication there, and if we had more stats, there would be more."
|
||||
e "Tomemos, por ejemplo, esta pantalla, que muestra dos entradas de estadísticas. Ya hay mucha duplicación allí, y si tuviéramos más estadísticas, habría más."
|
||||
|
||||
# game/tutorial_screens.rpy:633
|
||||
translate spanish screen_use_e2c673d9:
|
||||
|
||||
# e "Here, we moved the statements that show the text and bar into a second screen, and the use statement includes that screen in the first one."
|
||||
e "Aquí, movimos las sentencias que muestran el texto y la barra a una segunda pantalla, y la sentencia use incluye esa pantalla en la primera."
|
||||
|
||||
# game/tutorial_screens.rpy:635
|
||||
translate spanish screen_use_2efdd2ff:
|
||||
|
||||
# e "The name and amount of the stat are passed in as arguments to the screen, just as is done in the call screen statement."
|
||||
e "El nombre y la cantidad de la estadística se pasan como argumentos a la pantalla, tal como se hace en la llamada a la sentencia screen."
|
||||
|
||||
# game/tutorial_screens.rpy:637
|
||||
translate spanish screen_use_f8d1bf9d:
|
||||
|
||||
# e "By doing it this way, we control the amount of duplication, and can change the stat in one place."
|
||||
e "Al hacerlo de esta manera, controlamos la cantidad de duplicación y podemos cambiar las estadísticas en un solo lugar."
|
||||
|
||||
# game/tutorial_screens.rpy:653
|
||||
translate spanish screen_use_4e22c25e:
|
||||
|
||||
# e "The transclude statement goes one step further, by letting the use statement take a block of screen language statements."
|
||||
e "La sentencia transclude va un paso más allá, al permitir que la sentencia use tome un bloque de sentencia de lenguaje de pantalla."
|
||||
|
||||
# game/tutorial_screens.rpy:655
|
||||
translate spanish screen_use_c83b97e3:
|
||||
|
||||
# e "When the included screen reaches the transclude statement it is replaced with the block from the use statement."
|
||||
e "Cuando la pantalla incluida llega a la sentncia transclude, se reemplaza con el bloque de la sentensia use."
|
||||
|
||||
# game/tutorial_screens.rpy:657
|
||||
translate spanish screen_use_1ad1f358:
|
||||
|
||||
# e "The boilerplate screen is included in the first one, and the text from the first screen is transcluded into the boilerplate screen."
|
||||
e "La pantalla boilerplate se incluye en la primera, y el texto de la primera pantalla se transcluye en la pantalla boilerplate."
|
||||
|
||||
# game/tutorial_screens.rpy:659
|
||||
translate spanish screen_use_f74fab6e:
|
||||
|
||||
# e "Use and transclude are complex, but very powerful. If you think about it, 'use boilerplate' is only one step removed from writing your own Screen Language statement."
|
||||
e "Use y transclude son complejas, pero muy potentes. Si lo piensa, 'use boilerplate' es solo un paso menos de escribir tu propia sentencia de Lenguaje de Pantalla."
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# tutorial_screens.rpy:26
|
||||
old " Lv. [lv]"
|
||||
new "Lv. [lv]"
|
||||
|
||||
# tutorial_screens.rpy:29
|
||||
old "HP"
|
||||
new "HP"
|
||||
|
||||
# tutorial_screens.rpy:58
|
||||
old "Morning"
|
||||
new "Mañana"
|
||||
|
||||
# tutorial_screens.rpy:58
|
||||
old "Afternoon"
|
||||
new "Tarde"
|
||||
|
||||
# tutorial_screens.rpy:58
|
||||
old "Evening"
|
||||
new "Noche"
|
||||
|
||||
# tutorial_screens.rpy:61
|
||||
old "Study"
|
||||
new "Estudiar"
|
||||
|
||||
# tutorial_screens.rpy:61
|
||||
old "Exercise"
|
||||
new "Ejercitar"
|
||||
|
||||
# tutorial_screens.rpy:61
|
||||
old "Eat"
|
||||
new "Comer"
|
||||
|
||||
# tutorial_screens.rpy:61
|
||||
old "Drink"
|
||||
new "Beber"
|
||||
|
||||
# tutorial_screens.rpy:61
|
||||
old "Be Merry"
|
||||
new "Ser Feliz"
|
||||
|
||||
# tutorial_screens.rpy:107
|
||||
old "Strength"
|
||||
new "Fuerza"
|
||||
|
||||
# tutorial_screens.rpy:111
|
||||
old "Intelligence"
|
||||
new "Inteligencia"
|
||||
|
||||
# tutorial_screens.rpy:115
|
||||
old "Moxie"
|
||||
new "Moxie"
|
||||
|
||||
# tutorial_screens.rpy:119
|
||||
old "Chutzpah"
|
||||
new "Chutzpah"
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "What screens can do."
|
||||
new "Lo que pueden hacer las pantallas."
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "How to show screens."
|
||||
new "Cómo mostrar pantallas."
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "Passing parameters to screens."
|
||||
new "Pasando parámetros a las pantallas."
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "Screen properties."
|
||||
new "Propiedades de pantalla."
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "Special screen statements."
|
||||
new "Sentencias especiales de pantalla."
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "Using other screens."
|
||||
new "Usando otras pantallas."
|
||||
|
||||
# tutorial_screens.rpy:171
|
||||
old "That's it."
|
||||
new "Es todo."
|
||||
|
||||
# tutorial_screens.rpy:205
|
||||
old "I do."
|
||||
new "Entendido"
|
||||
|
||||
# tutorial_screens.rpy:331
|
||||
old "Hello, world."
|
||||
new "Hola, mundo"
|
||||
|
||||
# tutorial_screens.rpy:331
|
||||
old "You can't cancel this."
|
||||
new "You can't cancel this."
|
||||
|
||||
# tutorial_screens.rpy:346
|
||||
old "Shiro was here."
|
||||
new "Shiro estuvo aquí"
|
||||
|
||||
# tutorial_screens.rpy:362
|
||||
old "Click either button to continue."
|
||||
new "Haga clic en cualquier boton para continuar."
|
||||
|
||||
# tutorial_screens.rpy:377
|
||||
old "Close This Screen"
|
||||
new "Cerrar esta pantalla"
|
||||
|
||||
# tutorial_screens.rpy:388
|
||||
old "A Tag Screen"
|
||||
new "A Tag Screen"
|
||||
|
||||
# tutorial_screens.rpy:395
|
||||
old "B Tag Screen"
|
||||
new "B Tag Screen"
|
||||
|
||||
# tutorial_screens.rpy:447
|
||||
old "You're on a small device."
|
||||
new "Estás en un pequeño dispositivo pequeño."
|
||||
|
||||
# tutorial_screens.rpy:452
|
||||
old "You're not on a small device."
|
||||
new "No estás en un dispositivo pequeño."
|
||||
|
||||
# tutorial_screens.rpy:466
|
||||
old "This text is red."
|
||||
new "Este texto es rojo."
|
||||
|
||||
# tutorial_screens.rpy:496
|
||||
old "Hello, World."
|
||||
new "Hola, Mundo."
|
||||
|
||||
# tutorial_screens.rpy:510
|
||||
old "It's good to meet you."
|
||||
new "Es un placer conocerte."
|
||||
|
||||
# tutorial_screens.rpy:534
|
||||
old "Increase"
|
||||
new "Increase"
|
||||
|
||||
# tutorial_screens.rpy:563
|
||||
old "Earth"
|
||||
new "Tierra"
|
||||
|
||||
# tutorial_screens.rpy:563
|
||||
old "Moon"
|
||||
new "Luna"
|
||||
|
||||
# tutorial_screens.rpy:563
|
||||
old "Mars"
|
||||
new "Marte"
|
||||
|
||||
# tutorial_screens.rpy:581
|
||||
old "Now press 'a'."
|
||||
new "Ahora presiona 'a'"
|
||||
|
||||
# tutorial_screens.rpy:583
|
||||
old "The screen was just shown."
|
||||
new "La pantalla se acaba de mostrar."
|
||||
|
||||
# tutorial_screens.rpy:585
|
||||
old "You pressed the 'a' key."
|
||||
new "Presionaste la tecla 'a'."
|
||||
|
||||
# tutorial_screens.rpy:608
|
||||
old "Health"
|
||||
new "Salud"
|
||||
|
||||
# tutorial_screens.rpy:613
|
||||
old "Magic"
|
||||
new "Magia"
|
||||
|
||||
# tutorial_screens.rpy:644
|
||||
old "There's not much left to see."
|
||||
new "No queda mucho por ver."
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
# game/tutorial_video.rpy:10
|
||||
translate spanish tutorial_video_f34a17f5:
|
||||
|
||||
# e "Ren'Py supports playing movies. There are two ways of doing this."
|
||||
e "Ren'Py soporta la reproducción de videos. Hay dos maneras de hacer esto."
|
||||
|
||||
# game/tutorial_video.rpy:12
|
||||
translate spanish tutorial_video_4aefd413:
|
||||
|
||||
# e "The first way allows you to show a movie as an image, along with every other image that's displayed on the screen."
|
||||
e "La primera forma le permite mostrar una video como una imagen, junto con todas las demás imágenes que se muestran en la pantalla."
|
||||
|
||||
# game/tutorial_video.rpy:16
|
||||
translate spanish tutorial_video_b56ccf19:
|
||||
|
||||
# e "To do this, we first have to define an image to be a Movie displayable. Movie displayables take a movie to play, and can be given position properties."
|
||||
e "Para hacer esto, primero tenemos que definir una imagen para que sea una visualizable Movie. Los visualizables Movie toman un video para reproducir, y se le pueden dar propiedades de posición."
|
||||
|
||||
# game/tutorial_video.rpy:25
|
||||
translate spanish tutorial_video_fbaa71e4:
|
||||
|
||||
# e "Then, we can show the movie displayable, which starts the movie playing."
|
||||
e "Luego, podemos mostrar el visualizable movie, que inicia la reproducción de la película."
|
||||
|
||||
# game/tutorial_video.rpy:30
|
||||
translate spanish tutorial_video_bbbb242d:
|
||||
|
||||
# e "When we no longer want to play the movie, we can hide it."
|
||||
e "Cuando ya no queremos reproducir el video, podemos ocultarlo."
|
||||
|
||||
# game/tutorial_video.rpy:34
|
||||
translate spanish tutorial_video_a66b154c:
|
||||
|
||||
# e "The other way to show a movie is with the renpy.movie_cutscene python function. This shows the movie fullscreen, either until it ends or until the user clicks."
|
||||
e "La otra forma de mostrar un video es con la función python renpy.movie_cutscene. Esto muestra el video en pantalla completa, ya sea hasta que finalice o hasta que el usuario haga clic."
|
||||
|
||||
# game/tutorial_video.rpy:41
|
||||
translate spanish tutorial_video_63e75209:
|
||||
|
||||
# e "A Movie displayable can also take a mask with an alpha channel, which lets you make movie sprites. But that's more complicated, so I'll stop here for now."
|
||||
e "Un visualizable Movie también puede tomar una máscara con un canal alpha, lo que le permite hacer sprites de videos. Pero eso es más complicado, así que voy a parar aquí por ahora."
|
||||
|
||||
Reference in New Issue
Block a user