Per #3097.
Since the first thing change_focus does is to ignore changes
when grabbedm there's no reason to perform an expensive
focus_at_point search that will just be ignored.
This should improve performance, as usually the topmost
displayable is the one that should be given focus, and
so there's no need to consider others.
Per #3097.
A line of dialogue ending in {nw} will no longer wait for the
voice to end before terminating.
A line of dialogue containing {fast} will sustain the last
voice statement.
This fixes#3086 and fixes#3082, which were both caused by
large images being rendered; and 372d6d026e .
This would cause Renders to show up in the cache, be killed, and
lose the child textures.
What this does is to detect such renders, and avoids removing their
children.
Clicking on the button to view the list of changes will open the browser and load the Ren'Py page.
The button will only be displayed in the pre-release and release channels.
There wasn't much of a point in making it a RevertableDict, as
far as I can tell - since it's not reachable from a root, it should
never actually participate in rollback.
Fixes#3064.
This reverts commit 68cbf3d87d.
I don't believe this is right - when rollback happens, the context
will be replaced by an older copy of the context. So there's no
reason to rollback this dict.
This ensures that the reference counting gc can reclaim
renders quickly. While the main motivation is to make sure
textures are collected before the texture loader is reset,
this should also prevent GC pauses.
If music is currently playing it will pause, otherwise it will resume from where it stopped.
In case a music has already finished, the queue will play the music again from the beginning the next time it is called.
If the music is playing the button will receive the selected status and when paused it will be removed.
Note:
__MusicRoomTogglePause is based on __MusicRoomStop, because in some tests in my project, if __MusicRoomTogglePause was the same as __MusicRoomTogglePlay it caused some data about the music being played added with add(action=[SetVariable("jb_title", title)]), such as the music name, artist and the music image, not to be displayed.
Now, the layers are read with the displayable closest to the player
first, as it's likely to be the most relevant. This would control
the order in which screens are read, but not the screen itself,
as the screen should be read first to last.
This fixes an issue introduced by #3105, where it became
possible for LayeredImage._choose_attributes to return
None if a nonexistent attribute was given to optional,
as might be the case when switching between semi-related
sets of attributes.
* Remove animation of update indicator. (An annoyance if the creator
wants to be informed, but isn't ready to update.)
* Check for updates in a different thread. (Prevents slow internet
from blocking launcher start.)
* Use requests to check update channels.
This isn't great, as the fix is to do a render to texture,
and then subsurface that. Still, the transition from perspective
to no perspective should be rare-ish, and this allows transitions
and other things that need to subsurface to work, rather than
failing entirely.
Fixes#2998.
This introduces a new displayable, MatchTimes that passes st and at
to an adjusttimes inside it. This has the effect of undoing the
timing changes that are caused by the transforms in the layer
at list, and making the timing match the transition.
Applies the function when checking a recognised image, and stashes the
original name so that the error report will match the line in the script
being referenced (rather than reporting the adjusted version).
This is mainly for selected_hover and selected_idle, which will
become hover and idle if not handled, matching the way these prefixes
are handled in the rest of Ren'Py.
Fixes#2957.
This introduces the ability for a character to define its own
statement_name, and uses that ability to create a new statement
that keeps the dialogue window hidden.
This is used by the console to prevent the changes the console
makes from being elimiated when the creator rolls back to the
statement where the changes have been made.
While stuck in an infinite loop during saving, trying to break from it with a keyboard interrupt causes a crash because that exception args is an empty tuple, so we get an uncaught exception here, this checks that looking args[0] or args[1:] won't lead to a crash.
This means that each transform will get at least one shot to
update the state before replacement, such that showing a
transform and immediately replacing it has an effect.
Fixes#2914.
This was broken by some rollbacks, especially the sort of minimal rollbacks
that hapened in the console. This would cause the game to lose some
rollback information immediately after a rollback, causing problems.
Fixes#2907.
There seems to be a problem with Apple's OpenGL implementation
where it will crash during a dissolve transform. Documenting
this for now to get 7.4.7 out the door.
This means that in the usual case where it's not set, it doesn't
get forced to (0, 0), which fails in the case of a button inside
a viewport.
Fixes#2910.
This makes it similar to most other images Ren'Py loads, which
have this sort of padding.
An attempt to address #2847, without being able to repeat it.
If buttons with keyboard_focus True are shown but the first focusable element has keyboard_focus False, the focus_nearest function would focus on that first element when not focused on anything. This commit fixes that.
This works around a problem on windows where the windows+space
combination changes the keymap, and hence the lifting of the
windows key is not detected.
Fixes#2849.
The main issue was basically that xmaxmium was applied twice,
first in renpy.display.render.render, and then again in Window.render.
There was also a problem with xminimum, which would be scaled to
the smaller xmaximum.
Fixes#2890.
These methods don't do much in the current Ren'Py. ATL
images are predicted by .visit(), while Transform's child is set
when it's added. The only think it's used for is setting the
default_transform's state, and that was fixed by a direct call
to update_state.()
What's more, _show() has caused problems, first #2834, and now
Almost all places where Ren'Py autosaves have a configuration variable that can be set to False to prevent Ren'Py from autosaving at that time. The exception is the input function. This commit creates a new config variable autosave_on_input which can be set to False to disable autosaving when players input text.
This fixes a class of problem that could be caused by mixing
show and hide in a single operation, with the copy during hide
stopping things from working.
Fixes#2865.
The code to clear a single achievement was treating dicts as sets.
Additionally, only clearing if the achievement was granted means that the progress is not cleared for half-progress achievements.
This is essentially the same thing as the layer_at_list, except
that it is not cleared when the scene changes, making it suitable
for a set-and-forget 3d stage.
This will ensure that if the Python files were changed for some
reason, they'll be recompiled with the Ren'Py path, and not the
user's.
Fixesrenpy/renpyweb#16.
Passing translated strings to strftime doesn't work on Windows 10
when the locale is set to Korean, but passing the standard codes
does. So we pass the standard codes in, and just include the rest
in the final string.
Fixes#2837.
Rather than propagating TIMEVENT with modal=True through the
entire tree of displayables, this marks the event as modal
when the modal test passes.
This makes it possible for a displayable to know if it has a
modal displayable in front of it.
This is a behavior change, but one that seems correct - we're more
likely to want to translate the prefix and suffix directly, rather
than the previous setup where "Prefix[who]Suffix" was translated.
Compat is included.
Fixes#2817.
This field stores the AST, when no transcludes are supplied.
At https://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=62163 ,
and issue was reported that was caused by code looking at the
unanalyzed ast, and not the analyzed AST taken from disk.
This generally would be an autosave on Android, when the interface can't start
propery. Testing and analysis shows that Ren'Py can load these files without
issue.
Fixes#2797.
Visit now updates the DD, but it can leave a raw_child around,
so this clears that out as part of the dupliction, leaving
the state as what it was if visit wasn't called.
Fixes#2788.
It contained a serious translation mistake that had not been corrected for a long time.
ex) directory: game/tl/language -> game/tl/언어 (should not be translated...)
The goal of this is to make sure we're always scaling down, but only
by one mipmap level, so as much information as possible is represented
in the final image, without any being lost by a too-big mipmap.
Per #2764.
In projects where 'dismiss_unfocused' has been provided keys, these keys will also dismiss unfocused hard pauses. Generally this is undesirable, so this commit makes it so hard pauses use an empty list for the dismiss_unfocused parameter of the say behavior.
This moves an image around to where the mouse cursor would be,
making it possible to emulate the mouse cursor using displayables.
(And probably other effects.)
* When a layer transition is occuring, use the old (rather than new)
state for the global transition.
* Allow layer transitions to persist between interactions.
* The scene statement clears layer transitions.
Fixes#2763.
This extends the work done for the uniforms and gl_properties
by making all non-alias properties defined in a single place
in transform.py, and then updating the other data structures
required.
Since we're only copying from the framebuffer, we can use a renderbuffer
rather than a texture as the rendering targer. This should be a more
optimized path.
It was necessary to undo the combining of wait and get, as
this could lead to wait returning None when factor == 0, and
display failing.
However, the last-frame logic makes sense, so re-include it.
Per #2737, it's a bit confusing that excluding /** will exclude
all files in the directory. To fix this, the exclude behavior
is changed to not match a directory that is matched by the pattern
without a trailing * or **.
Fixes#2737.
With these changes, a modal TIMEEVENT is introduced, that is
created when a modal displayable ignores an event. This is
handled differenty, most notibly by not being used for
skipping, while still being used for pause and for
timers.
Ensures that we can sync the audio clip time of new music layer to a channel we specify. This will allow the music layers to remain in sync after save/load (<from X> doesn't sync after save/load).
Usage:
<sync [channel_name]>[audiofilename.ogg]
Otherwise a state of limbo would happen, when you're at or above the max progression level, but you don't have the achievement. Unlocking the achievement then would require to make a progression even higher than previously recorded.
Also there wouldn't be any way to reset progression towards an achievement.
Old-game is a new directory that stores the .rpyc files from the
last release of the game. Unlike in the rest of Ren'Py, the .rpyc
files in old-game can be checked in - they're not intended to be
changed on a regular basis. Ren'Py preferentially uses the .rpyc
files in old-game when assigning names to statements, which means
that even if something prevents the .rpyc files from being
generated, the old-game .rpycs will be used.
These should make looking at log.txt files easier, as the important
information is no longer buried under lists of extensions that
Ren'Py doesn't often use.
While it had been used to switch between GLES and ANGLE on windows,
in the most recent SDL2 ANGLE loads anyway. So there isn't much
use in this module, when used with renpy.exe (rather than in
a development mode).
This let SDL2 create the window again after the GL/GLES settings
have been set. The window creation code is responsible for
selecting the EGL config, and so it's important that it run
in GLES mode.
Fixes#2704.
Now there's the default theme, with generated checkboxes and scrollbar centers but pixel-perfect to the original,
there's the clear theme, same as the default but with generated window and background,
and there's the dark theme, which is the clear theme with tweaked colors.
This fixes a problem on the Galaxy Tab A (2016) where if the
display is not focused at start, the GL surface is created
with the wrong depth (565, or perhaps not at all, rather than
8888), and the window is black until focus is lost and gained
again.
When this happens, the app saves, quits, and is resumed on the
re-launch.
As change are taken into account in an init block (the skin.rpy user customization sure are), there needs to be a full reload.
Luckily, for the launcher it doesn't take much time.
Recreating l_checkbox_box (but as a transform)
Taking into account the image files put by players in the launcher directory
Remains to delete the scrollbars and the checkbox files from the launcher directory
The character replacement isn't scheduled if the character to be replaced has already been binded to a font.
Pending : process target when another FontGroup is given
Pending implementation in the segment method.
The char_map dict maps a character to replace to a character to replace it with.
For example char_map[ord('é')] = ord('e') is a nominal use case.
It's possible to have things like expressions and substutions in
the ParameterizedText strings in lint mode, that use variables
that are not initialized. This check for that and avoids the
errors that occur.
Per #2684.
Specifically:
- Explicitly cast the Unicode characters to FT_ULong before doing bit ops.
- Add the decoded value by 0x10000 to get the actual Unicode value.
- Change the rest of Py_UNICODE castings to FT_ULong so the Unicode values don't get casted back to 16-bit when rendering.
- Make the decode routine easier to read.
Modal has been added to these two displayables, and has been
changed so that it can take a callable that provides more precise
control over what is and isn't modal.
This prevents obscure interactions between the focus system and
the event system in the face of modal screen, where one screen
is modal and the other isn't.
`screen main_menu()` is probably the most customized of all built-in screens.
Currently styles in `screen main_menu` are applied to one `frame` and one `vbox` from `style_prefix`. This way, any time a developer adds a `frame` or a `vbox` to customize their `main_menu` they will inherit some unexpected properties (like `xsize`, `yfill`, `xalign`, `yalign`, a very specific `background`...).
Actually: styles are useful to reuse the same properties in different children of the same type. BUT properties defined in `style main_menu_frame` and `style main_menu_vbox` will hardly be reused.
My proposal (I think it makes more sense) is not to use `style_prefix` in the main menu, but apply directly those two styles to the two unique children that will use them.
This way, if developers add more `vbox` or `frame` to their `main_menu`, they will behave as expected with default properties.
Remove deprecated characteristic flags, per document mentioned in code comment
Add updated checksum to new file. Since the new file is created from manually-packed bits, the original PE object cannot be used for the new checksum. A second object is created for doing this.
This will only be effective when the Python enviroment was built with UCS-2 unicode type (e.g. official Ren'Py binary distribution). Once triggered, it will decode the surrogate pair to an FT_ULong before passing it to the glyph lookup routine in FreeType. Variation sequences are also handled when needed (i.e. <upper surrogate> <lower surrogate> <variation>).
I am of the opinion that when a player is using the keyboard to navigate the interface the location of the mouse should be ignored to avoid potentially confusing the player, but the mousearea displayable doesn't follow this principle. Ideally a mouse area would be able to tell if the keyboard-focused displayable overlaps with it and remain hovered then and only then, so it can be used to style/animate menus of buttons with built in keyboard support, but I have made the mouse area always unhovered when using the keyboard to navigate the interface as a simple solution in the meantime.
This is a lesser form of config.include_i686, the idea being that
the Ren'Py launcher will be whitelisted. (If it works, then we
can remove the Ren'Py icon from the launcher in the next
release.)
SDL2 only seems to check the hint once, at init time. However,
the Enable/Disable functions can be called at any time.
Fixes#2626, hopefully for good this time.
Made it so the focus_extreme function (used when arrow key is pressed if self voicing is off and no displayable on screen is currently focused) ignores displayables with keyboard_focus set to False.
Another attempt at this. It's really only the pause statment not
ending when a modal screen is up that is confusing, so we fix this
by allowing just pauses to avoid modal.
A common cause of display resets seems to be Androuid devices that
lose the egl context when going to sleep. This ensures we make
progress to actually going to sleep when this happens.
This isn't a performance enhancement, anymore, as surfaces aren't
used much any more. It was also causing a memory leak, as the
Texture kept a reference to the Surface, which kept the Surface
alive, which kept the Texture in the cache even if it should have
been purged.
This fixes a jitter problem that happens when the framerate is an
integer multiple of the movie rate. You might skip a frame because
it's a small fraction of a second early, only to have to wait for
the next frame to show it.
These can be performance critical, and involve a render to texture.
This change adds the ability to determine if the new textures have
mipmaps generated.
... which was that dynamic variables wouldn't get reset after a
rollback happened. This wasn't a huge problem, since dynamic
variables mostly were used in contexts, and contexts rarely
cause rollback.
However, we offer rollback as an option when an error in a context
occurs, which could trigger this issue.
Fixes#2599.
First off, it makes sense that if a size is being forced on a
displayable, it should fill to fit that size in possible. So
now xsize, ysize, and xysize force xfill and/or yfill in the
appropriate dimensions.
If box_wrap is true, however, fill is turned off for the last
line. This prevents it from being expanded unnaturally.
Fixes#2589, while preserving the fix for #2081.
This controller doesn't work without some other software to send
the init to it. Trying to use hidapi to initialize the controller
didn't work, and led to problems with other software that uses
USB. (And fundamentally, I don't think Ren'Py should use direct USB
access.)
So, instead, we detect the pro controller and ignore it.
The TimerState object expects to roll back, but there's an edge
case, since usually an object doesn't roll back to the start of
the interaction period when it was first created. However, due
to being reachable through a displayable that doesn't roll back,
the TimerState needs to roll back to its initial state.
Fixes#2596.
- Go back to using SDL_calloc on Windows, as it can be freed properly.
- Go back to 16 byte alignment, now that we patch ffmpeg to handle
alignment properly.
This lets a creator change the amount of time Live2D spends fading,
per the discussion at #2552.
This also changes the motion semantics to be inclusive of the
segment end time, which means the last segment of the motion will
continue forever if not faded out.
This works around the issue fixed by ffmpeg/ffmpeg@ba3e771a42
on sse3 systems, and prepares Ren'Py for other platforms that might want 32-byte alignment.
This may also help crashes (which have never been reported) with movies that have a row
length that is not a multiple of 4 pixels.
This is actually pretty rarely used, basically just for things
like:
label foo(a=1
+ 2):
...
Where an expression is inside parenthesis that exist in Python but
not Ren'Py. This inserts \ before each newline, but with the change
that it doesn't do it when inside a string, where newlines can
be meaningful.
Fixes#2549.
This helps with mipmap construction, as it means that a 1px line on
the edge can blend into transparency as well as other colors.
Fixes#2541, at least when scalling down to > 12.5%.
This will determine if the calling script was compiled in python 2
or python 3 mode, and invoke the python 2 or python 3 open function,
as appropriate.
Intended to address #2543.
Fixes#2539.
What happened is that the object was changed and then became
unreachable. Since purge_unreachable occured in change order,
the object was purged, and was restored in the new, rather than old
version.
This fixes a problem that only occured on AMD GPUs, where buttons
with a focus_mask would not be focused, probably because the
picel was being drawn in the wrong place, at least when anisotropy
is taken into account.
This is because it's possible for very small rounding errors to
cause a computed size to be infitesimally smaller than it should
be, and hence the texture to be a full pixels smaller.
Ren'Py requires that polygons used for clipping meshes or other
polygons all have the same winding order. (Counterclockwise,
in the usual Ren'Py coordinate system.) Certain matrix
multiplications can change winding order, and hence prevent
intersection from working.
This adds a pass that checks and fixes winding orders before
an intersection can occur.
Fixes#2472.
This is the strict handler built into Python, and it's used for
finding errors in Ren'Py script files. (This works around the
patch to Python 2.7 that makes surrogateescape the de-facto
default.)
* Once a rendererer is selected, keep using it even if Ren'Py is restarted.
* Store config.gl2 in persistent._gl2, and restore it if an error happens.
This should work well except for an autreload where config.gl2 is changed,
which ideally shouldn't happen.
Fixes#2457.
This is designed to fix a number of problems caused when running
on a filesystem in which a path is not representable in utf-8.
There are functions, like os.getcwdu that will attempt to decode
these paths, but fail. This ensures that paths can always round-trip
to and from unicode, which should help things work.
* Make CFBundleVersion more readable.
* Add build.mac_info_plist, to provide a more straightforward way
of customizing Info.plist, which lets the about screen be customized.
Fixes#2443.
Sleeping inside Ren'Py or Pygame_SDL2 has been proving to be
problematic. I'm not 100% sure why, though it seems Asyncify is
involved. It may have something to do with the names generated
by cython not being stable, though that's just a guess.
This avoids this problem by preventing Ren'Py from putting
SDL2 into a mode where it can block, and then explicitly
calling emscripten.sleep to emulate the original behavior.
This works around a bug that appears to manifest in the angle2
renderer when running on my radeon on Windows. When that bug
happens:
* GL_NEAREST_MIPMAP_* does not work when ANISOTROPY is non-zero.
* Setting the texture anisotropy to zero doesn't work when it has
been set to non-zero.
Hence, there's a new gl property that, when set, prevents anisotropy
from being added to newly-created textures.
Despite Tkinter being Python's de-facto GUI library, it's often not
installed by default on Linux distributions. PyGObject has very good
support on the other hand, and has the benefit of accessing the native
file picker available on a desktop through Gtk.FileChooserNative. This
commit will have the directory picker attempt to use the Gtk directory
picker first, or else fall back to the tkinter backend.
Some systems don't have libjpeg-turbo8-dev, and need libjpeg62-turbo-dev instead. Use the libjpeg-dev metapackage like https://github.com/renpy/pygame_sdl2/blob/master/README.rst does, which seems to work everywhere. Also, use `$(uname -m)` instead of hardcoding `x86_64` so the same instructions work on ARM systems too.
This fixes#2403, but also opens up some new space for shaders.
Peviously, we'd subsurface the children of a Render with mesh=True,
which would change the coordinates.
Now, the children are not cropped, which allows a shader to look up
value in a second child, if needed.
These need to be declared, but once they are they may be used
in conjunction with a normal expression. This can be used to
model clothing, pose changes, etc in conjunction with a normal
expression.
Fixes#2358.
This fixes a problem with the Haru sample model, where the masks
for her eyes were hidden and at 0 alpha, which mean that the masks
were not rendered, and hence couldn't be used.
Giving mesh True causes a flatten operation, which means that
the outline and top textures of the text become a single layer
before alpha is applied to it. Since alpha is applied once,
the colors are less murky, and we can raise the transparency
without reducing the amount of the background that shows through.
Previously, only the outermost transform would be considered, and
inner transforms would go away. With this change, the child of
the innermost transform is changed, while the outermost transform
is placed in the displayable tree.
This widens the keyboard out some, and will let us use slightly
bigger buttons.
This also adds ., and removes {, }, [, and ], which Ren'Py doesn't
like as part of input.
It hasn't been developed sinced 2013, as far as I can tell, and
the website has been down since 2019. Atom has basically replaced
it.
Editra, thank you for being part of Ren'Py.
Rather than doing weird things with offset, these now work by using
crop to crop the image to its original size. This should make pans
work better with other ATL properties.
Fixes#2320.
LOD is now controlled by u_lod_bias.
There is now a dictionary that is passed around through the gl2
renderer, properties. It's intended as the place to store
information that controls the fixed-function portions of
the GL pipeline. Right now, it controls the texture_scaling
mode (used to implement nearest neighbor rendering), and
pixel_perfect rendering, but it can be used for other things
in the future.
The full set of texture_scaling modes are now available.
It could trigger in a case where a C function in the module had the
same name as the module itself. (Like the render function in
renpy.display.render.) This causes functions that import it to
report an error.
The drawable align shader has a number of problems, most notably
that it could be triggered by accident - for example, the corners
of a Frame would trigger it. It could also move the diferent corners
of a texture differently, which would lead to blurring.
This replaces it with the concept of pixel perfect rendering. A
Render can be rendered in a pixel perfect manner if the only
transforms it has undergone are shifts by an integer number of
pixels. After a Render opts in (right now, Text is the only Render
that does so), each Model that it draws is shifted until (0, 0) is
located on an integer pixel on the screen.
Compared to drawable_align, pixel perfect rendering is simpler - by
actually transforming a point, it's easy to determine the nearest
pixel, and then move the draw by up to 1/2 of a pixel in each
axis.
After compared with the below code table, added some lacked characters.
GB 2312-80 (China)
Big 5 (Taiwan) + frequency table
JIS X 0208 (Japan) + joyo kanji
This replaces the flatten property, and explicitly flattens into
a mesh, if possible. Optionally, this takes a tuple, that
defines the number of points in the horizontal and vertical
directions that make up the mesh. (The idea being that a
vertex shader can then distort the mesh.)
The different shader variables now get prefixed with the GLSL
type - u_ for uniform, a_ for attribute, v_ for varying. This
makes sure that we're good if OpenGL adds new functions.
There are two new uniforms - u_time is the frame time, and u_random
is a vec4 with 4 random values in it.
Uniforms beginning with u_renpy and the standard uniforms (u_transform,
u_time, and u_random) are not exposed to ATL. (Since Ren'Py would just
overwrite them, anyway.)
Instead of special-casing these uniforms, they're updated by the
displayables that change them, and then config.merge_uniforms
makes sure that things like nested color matrixes and nested
alpha combine properly.
This is a dictionary that explains how to merge together uniforms
that are provided by the same shader in multiple places. For example,
the alpha should me multiplied, not replaced.
ColorMatrix is the new base class for objects that can be called
to return a Matrix. ATL can interpolate between different instances
of the same ColorMatrix subclass, and ColorMatrixes can be multiplied
together, in which case the relevant Matrixes wil be multipled
together.
Thinking about Patreon + #2255, I've realized that reusing im.matrix
is probably a bad idea. The 5x5 matrices don't make sense with
premultiplied alpha, and ATL really wants function-like objects
that help animated things.
In the redesign, matrixcolor takes either a 4x4 Matrix, or a
function-like object (a ColorMatrix object) that takes an old
object to interpolate from, a completion amount, and returns
a Matrix.
These were mostly used by the software renderer, which is no longer
performance-critical. The MMX-based stuff appears to be broken on
i686 on recent GCCs (it had been disabled on Linux for years), so
it's easy to justify removing it.
Changes all instances of `<dict>.has_key(<key>)` to `<key> in <dict>` across all Python and RenPy files, as Python 3 has removed the `has_key` method.
Excuse my grammar and missing backtick quoted content in my last commit... how embarassing.
The last commit was supposed to say: "Changed all instances of `except <type>, <var>` to `except <type> as <var>`"...
Setting size to None is used reset and few other places so we need to
keep support for clearing size in that way rather than requiring code to
be ported to explicitly setting xsize and ysize to None.
If maxsize is specified, minsize is ignored.
If not None, minsize causes the displayable to be scaled so that it fills a box of this size, while preserving aspect ratio. (Note that this means that one of the dimensions may be greater than the size of this box.)
Since there's no direct linking to OpenGL anymore, there's no reason
to delay this import, and doing so makes the Live2D API available
in the standard manner.
Generally, the resource segment Ren'Py uses will be bigger than the
one used in games. If it is, keep it. Otherwise, use the delta
between section sizes everywhere.
This provides a way to profile init blocks.
It's probably best used with something like:
init -1000 python:
config.profile_init = .2
To display any init block that takes longer than .2 seconds.
Changes to Apple's notatization system make it hard to include
unsigned executables. To fix this, we'll attempt to write the
executables after the launcher starts.
Such messages arise with
label start:
pause # eval failed here
$var = None
pause # non-existing label None here
$var = "test"
pause
call expression var
jump expression var
In addition, minor refactoring and error description change in parse_play_music to be more consistent with parse_queue_music and the new parse_stop_music
Introduce new 'voice' type in progressive_download.txt.
Predict 'voice' statements and pre-downloads them; removes files after 3mn to avoid consuming all memory.
Currently auto-voicing is not supported (may need prediction in "say" statement).
* Allow the player to select the model-based renderers.
* Remove the framerate test. (This was after seeing a Surface that
reported the error, but was working fine. Plus, it's not clear
that DX would have helped.)
* Remove the DirectX installer.
As Ren'Py become more dependent on GL for functionality and
performance, the purpose of the software renderer is to provide
error messages to players.
As a result, support for fullscreen mode and a custom mouse has
been removed.
This is a much better fit for modern computers, as it means that Ren'Py
can use the window that has been resized for it, rather than having to
restart the video system whenever a resize occurs.
The update to the newest SDL on Androd seems to call terminate,
even when the app might come back to life. It's okay to let the
OS kill us, so we do that.
It took me forever to spot that there are 2 functions with the same name, and the first one in the documentation (which we find through Ctrl+F) did not mention that.
This had mostly been true, but there were a few places where
if the android module had been importable was what mattered.
This has been fixed by moving to a unified Python library.
Very basic (static elasticity) Catmull-Rom implementation to work with knots in ATL. Slight tweak to allow a knot to be a tuple of tuples and minor documentation changes.
This is the start of integrating the renpy-build results into the
Ren'Py build process. As part of this, renpy.sh has been moved into
renpy-build, and is copied here as the dependences are built.
Per #2079.
The idea here is that music may often not be mixed with the
thought of self voicing in mind, and so it makes sense to drop
the music and sound mixers when self-voicing is enabled. The
amount to drop by is controllable from the accessibility menu,
for games where this is not desired.
This removes a the image manipulators that depend on a file from the
image cache when one of the files that are depended on change. This
is also a first draft of the function needed to load files from the
web on the fly.
Apart from being faster in some circumstances, this is close to
what other platforms (ie, Live2D) use internally, so at some point
we can avoid copying over that data.
This removes a the image manipulators that depend on a file from the
image cache when one of the files that are depended on change. This
is also a first draft of the function needed to load files from the
web on the fly.
There was a problem reported whenre Py_DECREF could cause arbitrary
pauses to occur. Now, the names stored inside renpysound are C strings,
rather than Python strings, and so they can be deallocated without
risk of triggering the garbage collector.
Locking has also been somewhat simplified - theree are now two
locks, the audio and name lock, with rules of each. The functions
now do not grab the GIL automatically, as there's no need.
This is part of the ongoing modernization program. OpenGL 1.x is
now hopelessly obsolete, so it's gone. SDL2 now supports creating
contexts for us, so we'll use it to manage the EGL path.
- Use \n separator in renpyweb_remote_files.txt
- Move download code to a new module
- load_core() now throws a DownloadNeeded exception which is caught by Image.load(), calling renpy.webloader.enqueue()
- renpyweb_remote_files.txt is now only processed if downloading is enabled
This compiles python in a .rpy file in a way that is more compatible
with Python 3. (It enables Python 3 division, and will enable Python3
.items(), .keys(), and .values().)
Cython implements .iteritems, .itervalues, and .iterkeys for dicts
in a way that works with Python 3 - so long as it knows that it's
dealing with a dict type. This add some annotations to help it out.
This is the start of a series of changes that will embrace future's
philosophy - that Python 2/3 source should be as close to Python 3
as possible - and even extended a bit, like with dictviews.
We do have to pick and choose with future - it's important that
Ren'Py remain performant over the transition period - but things
like using sys.modules to map modules to their new Python 3
locations does appeal to me.
It now triggers on: from __future__ import with_statement, division.
This should be a bit safer, because with_statement is obsolete - even if
it is used by any Python, it can be removed without changing the
semantics of the program. (We can't trigger _just_ on it, as all
old .rpycs are compiled with that flag.)
Right now, this is opted into when "from __future__ import division"
is given, and lets us program using Python 3's dict semantics while
still working in Python 2.
Probably the only way py3 Ren'Py is going to look acceptable is
to support .items(), and the only way to do that is to patch Python
2.7 to replace the method with one that returns the appropriate
proxy.
While we're at it, we can re-add iteritems() and itervalues(),
makng those accessible to older code via dict.
This is intended for use as the clip polygon, and hence it doesn't
need 3d support. (The new Mesh implermentation doesn't use this,
as it has its own polygons.)
This is part of a series of performance improvements when threaded
optimizations are enabled on Nvidia cards. (__GL_THREADED_OPTIMIZATIONS=1
on Linux.)
glGenTextures was taking a long time - 3ms! - to complete. So we
avoid it entirely, and instead allocate the texture numbers
beforehand and clear the textures without deallocating the
numbers.
This particular use case appears to be safe, but I could make Ren'Py crash with more complex async_call-s.
This may also explain some irregular crashes a while ago when letting RenPyWeb run unattended.
This is somewhat similar to running Python in two threads. In doubt, let's avoid.
Moreover, however autosave is run, the browser will freeze a bit, no significant change.
This is possible for certain things like viewports that share an
adjustement, or bars that are rendered before the corresponding
viewport. This detects this case are restores the render to a
useable state.
Turns out that a .zip can't really represent the extended
attributes used for signing some files properly, but the
tar format can. So we use that to ship things over, and
get a working .dmg.
This should fix a race condition where that could cause unprefixed
key commands (like 'v' or 'a') to trigger if KEYDOWN is present
but the TEXTINPUT hasn't been delivered yet.
This is a backport of a performance improvement from the gl2
branch, where profiling reported that rebinding the framebuffer
was very slow, and simply copying the pixels out is much
faster.
Additional stores are available as local variables in the default 'store' under their name already, consequently 'import store.mystore as mystore' is a no-op
While we could have just added it to the tuple of shaders created in
GL2DrawingContext, that would lead to creating a tuple on every
render. So instead, it's added in the shader compiler.
* Ask GL for the maximum size.
* Remove the idea of generations - we swap out the loader when a
generation is obsolete.
* Cache the fbo so changing it is needed less often.
This improves gl2 Polygons and Meshes by making it clear if a
new object is created or they're updated in place, by supporting
multiplication by matrices directly, and by including the repr
function everywhere.
Really, a quality of life improvement.
After extensive profiling my GTX 1060, it appears that using
glFrameBufferTexture2D is unacceptably slow. (300+us for just that
one call). glCopyTexImage seem to be much faster, with realistic
small texture loads (like button images) taking 60us or so.
Add support for tile="integer" to frame.
This is a version of tiling that always does an integer number of repeats, scaling as necessary to accomplish this.
This might actually change over the lifecycle of a polygon, as the
winding of the polygon changes when it goes from the pygame/Ren'Py
coordinate space to the OpenGL viewport space.
This change means it doesn't matter - polygon intersection can
always occur.
The differentiation between .deinit() and .quit() was hard to understand.
This change makes it clear - .kill_textures frees all of the OpenGL textures,
while .quit() releases all GL resources.
This is a much simpler fix for the problem in a1dd218560,
which is that the wrong scope will be given in a used screen that happens to be
constant.
The realization is that if a used screen is constant, it can't change - and hence
it doesn't need to be given a new scope at all.
Fixes#1905, where several bugs got collected into one place. The
main problem is that we need to store the actual values of
non-constant variables that, for example, change durting iteration,
while at the same time allowing things that use the scope to
update when the screen scope changes (from new parameters, or
something like SetScreenVairable).
This uses a method (scope_changed, similar to copy_on_change) to
take things that use the scope out of the cache when a scope change
happens.
- Move it to 00acessibility.rpy, where I can find it.
- sv -> alt (The old name still works.)
- Allow the creator to supply a character that's used to display
descriptive text.
The check hadn't included that, which means that text tags would
not be processed when self_closing_custom_text_tags was set, and
custom_text_tags was not.
A field (especially a global Variable) might not exists at the beginning of the interaction. This causes the application to crash e.g. if the variable is set on the 'action' of a button.
The solution is that the get_selected returns False if the given field does not exists at the moment.
Before this change, if an invaidation was to occur mid-render,
it was possible the new render would not be added to the cache.
Fixes#1856.
This also defers invalidation when a redraw is going to happen.
In file included from ffmedia.c:13:
/usr/include/malloc.h:3:2: error: "<malloc.h> has been replaced by <stdlib.h>"
#error "<malloc.h> has been replaced by <stdlib.h>"
^
This allows the BMFont object to understand "kerning" lines embedded within BMFont definitions.
The kerning information is added to the existing "self.kerns" property.
There is a way to scale the size per font file, and a way to scale the
vertical extent by font file. The main reason for these is to provide
a way to rescale opendyslexic to fit in the same space as DejaVuSans.
This is an accesibility function that can turn one font into
another font, or a font group. It's currently being used to
enable OpenDyslexic when it's needed.
It's now O(1) in operation, at the cost of increasing the size of the
FontGroup. There's also the option to specify a default font, and
it's possible to add a FontGroup to a FontGroup.
This provides context to the callback about the image it's affecting
with the transition. This can be used in isolation, or with the current
state to intelligently utilise a transition based upon the
tags/attributes of the image being displayed.
That's because when a scope is involved, it's possible for two
DynamicImages with the same name to be different, even if the
name is the same.
This can cause problems with displayable reuse in screens.
Fixes#1759.
Calls to renpy.restart_interaction were causing the screen to
restart early, which means that the show events never were
dispatched, and the update event would overwrite it.
Fixes#1753.
This is because checking redraws happens once per event, but
we might handle multiple events before the redraw itself occurs.
After process_redraws happens, the Renders are in an invalid state
until the next draw_screen.
When in this invalid state, if the inspector is called, a crash
occurs.
This moves from trying to maintain the zorder, to just sorting
the children any time it changes. This makes it possible to
persist the zorder through interaction restarts in a sensible
way.
Fixes#1727.
Switch back to prepending temporary_attrs with speaking_attribute so
that temporary say attributes have the chance to suppress the
speaking_attribute.
The use case for this is catering for infrequent lines of a character's
internal monologue, for which they are responsible, but do not actively
speak.
This fixes a problem with layeredimages for which "foo red happy"
and "foo red happy speaking" will both be defined. In that case,
"show foo red happy" won't remove speaking, and so we need to
do an explicit "show red happy -speaking".
We had been using the width and height offered to the drag as
the places where it can move. However, those are affected by
any xmaximum or ymaximum in effect.
This changes that so the original width and height are stored an
passed to the drag.
This makes sure that we can't create a window too big to fit on the
user's monitor.
It aso now highlights the Window preference when it's as big as it
can be, even if less than 100% of the game's size.
Fixes#1716.
We don't want the after_load block to be a distinct part of the
game for the purpose of rollback, as it might come and go and
hence block roll-forward.
Fixes#1718.
Having that extra pixel guarantees all the data is present, preventing
a blank (black or white) line from appearing at the bottom of the screen
during dissolves.
When given, the attributes are defined without the group - that
means that auto can be used to define multiple attributes, of
which any of them can be selected at once.
This is a compromise between the 6.99 and 7.x behavior. In the older
stuff, we would never automatically clear the screenshot, meaning
if a game called renpy.take_screenshot, it could grow stale.
In the newer behavior, we would clear it after each interaction,
even meanigless ones, like an implie with.
This uses renpy.checkpoint to clear the screenshot, which is a proxy
for the game state meaningfully advancing. In addition, this behavior
can be disabled by setting config.auto_clear_screenshot to False.
Fixes#1680.
This works around an issue in Steam where the injected libraries
change the variable to STEAM_DYLD_INSERT_LIBRARIES, which means
python never sees it and the overlay doesn't load.
This detects a problem where the creator passed something else to
text, and had a hard-to-diagnose problem. ie:
text ("!" + what) id "what"
will cause weird tag errors.
This is to prevent Ren'Py from causing problems if it deletes a
.rpy file when the .rpyc file is present, where the translation
is available in multiple files.
SourceHanSans-Light-Lite, based on SourceHanSansCN-Light, which contain General specification Chinese table (China Mainland) 1st-order table (3500 characters) and Common Chinese character standard font table (Taiwan) (aka A-order table) (4808 characters), have already tested in "The Question" and launcher.
Because of changes that have been made over the past few years,
it was possible to write:
show eileen happy but with random attributes appended
And Ren'Py would take it. That was never intended, and this closes
off this case.
Some tags that require value, when supplied none, raise python's
exceptions which might be hard to interpret.
Added simple checks to those tags to see if the supplied value is
empty. Raises exception that is easier to read than the ones
Python raises.
contents += _("# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n")
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2021 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
@@ -19,19 +19,25 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
default persistent.android_bundle = False
init python:
ANDROID_NO_RAPT = 0
ANDROID_NO_JDK = 1
ANDROID_NO_SDK = 2
ANDROID_NO_KEY = 3
ANDROID_NO_CONFIG = 4
ANDROID_OK = 5
ANDROID_NO_BUNDLE_KEY = 4
ANDROID_NO_CONFIG = 5
ANDROID_NO_BUNDLE = 6
ANDROID_OK = 7
NO_RAPT_TEXT = _("To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
NO_JDK_TEXT = _("A Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher.")
NO_JDK_TEXT = _("A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher.")
NO_SDK_TEXT = _("RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this.")
NO_KEY_TEXT = _("RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore.")
NO_BUNDLE_KEY_TEXT = _("RAPT has been installed, but a bundle key hasn't been configured. Please create a new key, or restore bundle.keystore.")
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
NO_BUNDLE_TEXT = _("Please select if you want a Play Bundle (for Google Play), or a Universal APK (for sideloading and other app stores).")
OK_TEXT = _("Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device.")
PHONE_TEXT = _("Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button.")
@@ -46,9 +52,13 @@ init python:
BUILD_INSTALL_AND_LAUNCH_TEXT = _("Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device.")
LOGCAT_TEXT = _("Retrieves the log from the Android device and writes it to a file.")
LIST_DEVICES_TEXT = _("Lists the connected devices.")
PAIR_TEXT = _("Pairs with a device over Wi-Fi, on Android 11+.")
CONNECT_TEXT = _("Connects to a device over Wi-Fi, on Android 11+.")
DISCONNECT_TEXT = _("Disconnects a device connected over Wi-Fi.")
DEBUG_TEXT = _("Selects the Debug build, which can be accessed through Android Studio. Changing betweendebug and release builds requires an uninstall from your device.")
RELEASE_TEXT = _("Selects the Release build, which can be uploaded to stores. Changing between debug and release builds requires an uninstall from your device.")
PLAY_BUNDLE_TEXT = _("Builds an Android App Bundle (ABB), intended to be uploaded to Google Play. This can include up to 2GB of data.")
UNIVERSAL_APK_TEXT = _("Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data.")
import subprocess
@@ -102,8 +112,13 @@ init python:
return ANDROID_NO_SDK
if not os.path.exists(rapt.plat.path("project/local.properties")):
return ANDROID_NO_KEY
if not os.path.exists(rapt.plat.path("project/bundle.properties")):
return ANDROID_NO_BUNDLE_KEY
if not os.path.exists(os.path.join(project.current.path, ".android.json")):
__("Run configure before attempting to build the app.")
__("Google Play support is enabled, but build.google_play_key is not defined.")
__("Updating project.")
__("Creating assets directory.")
__("Creating expansion file.")
__("Packaging internal data.")
__("I'm using Gradle to build the package.")
__("Uploading expansion file.")
__("The build seems to have failed.")
__("I'm installing the bundle.")
__("Installing the bundle appears to have failed.")
__("Launching app.")
__("Launching the app appears to have failed.")
__("The build seems to have succeeded.")
__("The armeabi-v7a version works on most phones on tablets, while the x86_64 version works on the simulator and chromebooks.")
__("What is the full name of your application? This name will appear in the list of installed applications.")
__("What is the short name of your application? This name will be used in the launcher, and for application shortcuts.")
__("What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot.")
@@ -29,28 +29,19 @@ init python hide:
__("{} is a Java keyword, and can't be used as part of a package name.")
__("What is the application's version?\n\nThis should be the human-readable version that you would present to a person. It must contain only numbers and dots.")
__("The version number must contain only numbers and dots.")
__("What is the version code?\n\nThis must be a positive integer number, and the value should increase between versions.")
__("The numeric version must contain only numbers.")
__("How much RAM do you want to allocate to Gradle?\n\nThis must be a positive integer number.")
__("The RAM size must contain only numbers.")
__("How would you like your application to be displayed?")
__("In landscape orientation.")
__("In portrait orientation.")
__("In the user's preferred orientation.")
__("Which app store would you like to support in-app purchasing through?")
__("Google Play.")
__("Amazon App Store.")
__("Both, in one app.")
__("Neither.")
__("Would you like to create an expansion APK?")
__("No. Size limit of 100 MB on Google Play, but can be distributed through other stores and sideloaded.")
__("Yes. 2 GB size limit, but won't work outside of Google Play. (Read the documentation to get this to work.)")
__("Do you want to allow the app to access the Internet?")
__("Do you want to automatically update the generated project?")
__("Do you want to automatically update the Java source code?")
__("Yes. This is the best choice for most projects.")
__("No. This may require manual updates when Ren'Py or the project configuration changes.")
__("Unknown configuration variable: {}")
__("I'm compiling a short test program, to see if you have a working JDK on your system.")
__("I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Without a working JDK, I can't continue.")
__("The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nYou can also set the JAVA_HOME environment variabe to use a different version of Java.")
__("I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\nhttps://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Without a working JDK, I can't continue.")
__("The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java.")
__("The JDK is present and working. Good!")
__("The Android SDK has already been unpacked.")
__("Do you accept the Android SDK Terms and Conditions?")
@@ -59,13 +50,15 @@ init python hide:
__("I've finished unpacking the Android SDK.")
__("I'm about to download and install the required Android packages. This might take a while.")
__("I was unable to accept the Android licenses.")
__("I was unable to accept the Android licenses.")
__("I was unable to install the required Android packages.")
__("I've finished installing the required Android packages.")
__("You set the keystore yourself, so I'll assume it's how you want it.")
__("You've already created an Android keystore, so I won't create a new one for you.")
__("I can create an application signing key for you. Signing an application with this key allows it to be placed in the Android Market and other app stores.\n\nDo you want to create a key?")
__("I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\n\You also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?")
__("Please enter your name or the name of your organization.")
__("I can create an application signing key for you. This key is required to create Universal APK for sideloading and stores other than Google Play.\n\nDo you want to create a key?")
__("I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?")
__("Could not create android.keystore. Is keytool in your path?")
__("I've finished creating android.keystore. Please back it up, and keep it in a safe place.")
__("I can create a bundle signing key for you. This key is required to build an Android App Bundle (AAB) for upload to Google Play.\n\nDo you want to create a key?")
__("I will create the key in the bundle.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of bundle.keystore, and keep it in a safe place?")
__("Could not create bundle.keystore. Is keytool in your path?")
__("It looks like you're ready to start packaging games.")
# Some analysis and the little I could find on how the symbol tables were layed out show that the PE table is in two sections. One is
# a list of NumberOfSymbols*(18 bytes) symbol entries, followed immediately by a string table who's length is specified in the 4 bytes following the symbol structure list
#Again, the information *seems* to indicate that this will always follow the entire block of all sections (so be at the end of the file)
######
# As a related note, apparently this flag has been deprecated, but appears to be set (I think ..) in the renpy.exe that is used to build from..
# no idea of a consequence, just an observation
# https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#characteristics , see "IMAGE_FILE_LINE_NUMS_STRIPPED" :
# COFF line numbers have been removed. This flag is deprecated and should be zero.
# In renpy.exe, this 2-byte flag is @ 0x096 and 0x097 in little-endian
# Section, SizeOfRawData = multiple of FileAlignment (On Disk size)
# Scetion, VirtualSize is NOT aligned to any specific number, and rwdata may be > than this due to its alignment requirement (In memory size)
#
# the resource section should be padded out to meet the alignment requirement of SizeOfRawData = multiple of FileAlignment (So, in the file, since on disk)
#
#####
# RVA table virt address and size = that in the section header
#
#####
# SizeOfImage must be aligned to SectionAlignment (memory alignment)
# There is NO padding needed, the image size number simply needs to be aligned to >= the
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."), label=None)
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python3-tk or tkinter package."), label=None)
if code:
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."), label=None)
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python3-tk or tkinter package."), label=None)
elif choice:
path = choice.decode("utf-8")
is_default = False
if path is None:
# Path being None or "" means nothing was selected.
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
SIL OPEN FONT LICENSE
Version 1.1 - 26 February 2007
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects,
to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework
in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold
by themselves.
The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided
that any reserved names are not used by derivative works.
The fonts and derivatives, however, cannot be released under any other type of license.
The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such.
This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting ? in part or in whole ?
any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge,
embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,in Original or Modified Versions,
may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software,
provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files,
human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields
can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written
permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented
to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise
any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit
written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed
under any other license. The requirement for fonts to remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT.
IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2021 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
@@ -309,7 +309,8 @@ label change_gui:
project_name = project.current.name
mode = interface.choice(
_("{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"),
__("{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?") +
__("{size=-4}\n\nThis will not overwrite gui/main_menu.png, gui/game_menu.png, and gui/window_icon.png, but will create files that do not exist.{/size}"),
[
("change", _("Choose new colors, then regenerate image files.")),
("regenerate", _("Regenerate the image files using the colors in gui.rpy.")),
@@ -327,25 +328,6 @@ label new_gui_project:
python:
gui_new = True
project_name = interface.input(
_("PROJECT NAME"),
_("Please enter the name of your project:"),
filename=True,
cancel=Jump("front_page"))
project_name = project_name.strip()
if not project_name:
interface.error(_("The project name may not be empty."))
install_from_zip("Live2D Cubism SDK for Native", "CubismSdkForNative-4-*.zip", patterns)
jump front_page
screen install():
frame:
style_group "l"
style "l_root"
window:
has vbox
label _("Install Libraries")
add HALF_SPACER
hbox:
frame:
style "l_indent"
xfill True
viewport:
scrollbars "vertical"
mousewheel True
has vbox
text _("This screen allows you to install libraries that can't be distributed with Ren'Py. Some of these libraries may require you to agree to a third-party license before being used or distributed.")
add HALF_SPACER
add SPACER
textbutton _("Install Live2D Cubism SDK for Native"):
action Jump("install_live2d")
add HALF_SPACER
frame:
style "l_indent"
has vbox
text _("The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-4-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc.")
add SPACER
text _("Live2D in Ren'Py doesn't support the Web, Android x86_64 (including emulators and Chrome OS), and must be added to iOS projects manually. Live2D must be reinstalled after upgrading Ren'Py or installing Android support.")
add SPACER
if not achievement.has_steam:
textbutton _("Install Steam Support"):
action Jump("install_steam")
add HALF_SPACER
frame:
style "l_indent"
has vbox
text _("Before installing Steam support, please make sure you are a {a=https://partner.steamgames.com/}Steam partner{/a}.")
else:
textbutton _("Install Steam Support")
add HALF_SPACER
frame:
style "l_indent"
has vbox
text _("Steam support has already been installed.")
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2021 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -62,28 +62,52 @@ label new_project:
if persistent.projects_directory is None:
$ interface.error(_("The projects directory could not be set. Giving up."))
if not persistent.legacy:
python:
if persistent.legacy:
python:
check_language_support()
gui_kind = interface.choice(
_("Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."),
new_project_language = (_preferences.language or "english").title()
gui_kind = "new_gui_project"
# When translating this, feel free to replace [new_project_language] with the translation of your language.
$ interface.info(_("You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."))
jump new_gui_project
# When translating this, feel free to replace [new_project_language] with the translation of your language.
interface.info(_("You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."))
python:
check_language_support()
gui_kind = interface.choice(
_("Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."),
new "Vocalisation du contenu du presse-papier activée. "
new "Lecture vocale vers presse-papier activée. "
# 00library.rpy:144
old "Self-voicing enabled. "
new "Vocalisation automatique activée. "
new "Lecture vocale activée. "
# 00library.rpy:179
old "Skip Mode"
@@ -227,15 +226,15 @@ translate french strings:
# 00preferences.rpy:422
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Vocalisation du contenu du presse-papier activée. Pressez « Maj+C » pour la désactiver."
new "Lecture vocale vers presse-papier activée. Pressez « Maj+C » pour la désactiver."
# 00preferences.rpy:424
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "La vocalisation automatique veut dire « [renpy.display.tts.last] ». Pressez « Alt+Maj+V » pour la désactiver."
new "La lecture vocale veut dire « [renpy.display.tts.last] ». Pressez « Alt+Maj+V » pour la désactiver."
# 00preferences.rpy:426
old "Self-voicing enabled. Press 'v' to disable."
new "Vocalisation automatique activée. Pressez « v » pour la désactiver."
new "Lecture vocale activée. Pressez « v » pour la désactiver."
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
@@ -332,3 +331,457 @@ translate french strings:
# 00gallery.rpy:586
old "return"
new "retour"
translate french strings:
# renpy/common/00accessibility.rpy:76
old "Font Override"
new "Forcer la police"
# renpy/common/00accessibility.rpy:80
old "Default"
new "Par défaut"
# renpy/common/00accessibility.rpy:84
old "DejaVu Sans"
new "DejaVu Sans"
# renpy/common/00accessibility.rpy:88
old "Opendyslexic"
new "Opendyslexic"
# renpy/common/00accessibility.rpy:94
old "Text Size Scaling"
new "Redimensionnement du texte"
# renpy/common/00accessibility.rpy:100
old "Reset"
new "Réinitaliser"
# renpy/common/00accessibility.rpy:105
old "Line Spacing Scaling"
new "Espacement vertical"
# renpy/common/00accessibility.rpy:117
old "Self-Voicing"
new "Lecture vocale"
# renpy/common/00accessibility.rpy:121
old "Off"
new "Désactivée"
# renpy/common/00accessibility.rpy:125
old "Text-to-speech"
new "Synthèse vocale"
# renpy/common/00accessibility.rpy:129
old "Clipboard"
new "Presse-papier"
# renpy/common/00accessibility.rpy:133
old "Debug"
new "Débogage"
# renpy/common/00accessibility.rpy:32
old "bar"
new "barre"
# renpy/common/00accessibility.rpy:33
old "selected"
new "sélectionné"
# renpy/common/00accessibility.rpy:34
old "viewport"
new "viewport"
# renpy/common/00accessibility.rpy:35
old "horizontal scroll"
new "barre de scrolling horizontal"
# renpy/common/00accessibility.rpy:36
old "vertical scroll"
new "barre de scrolling vertical"
# renpy/common/00accessibility.rpy:37
old "activate"
new "activer"
# renpy/common/00accessibility.rpy:38
old "deactivate"
new "désactiver"
# renpy/common/00accessibility.rpy:39
old "increase"
new "augmenter"
# renpy/common/00accessibility.rpy:40
old "decrease"
new "diminuer"
# renpy/common/00accessibility.rpy:193
old "Self-Voicing Volume Drop"
new "Baisse de volume pendant la lecture vocale"
# renpy/common/00accessibility.rpy:202
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "Les options de ce menu ont pour objectif d'augmenter l'accessibilité. Elles peuvent ne pas fonctionner sur tous les jeux, et certaines combinations d'options peuvent rendre le jeu injouable. Le problème ne vient pas du jeu ou du moteur. Pour de meilleurs résultats en changeant la police, essayez de maintenir le texte de la même taille qu'avant."
# renpy/common/00action_file.rpy:353
old "Save slot %s: [text]"
new "Sauvegarder %s: [text]"
# renpy/common/00action_file.rpy:434
old "Load slot %s: [text]"
new "Charger %s: [text]"
# renpy/common/00action_file.rpy:487
old "Delete slot [text]"
new "Supprimer slot [text]"
# renpy/common/00action_file.rpy:566
old "File page auto"
new "Page auto"
# renpy/common/00action_file.rpy:568
old "File page quick"
new "Page rapide"
# renpy/common/00action_file.rpy:570
old "File page [text]"
new "Page [text]"
# renpy/common/00action_file.rpy:769
old "Next file page."
new "Page suivante."
# renpy/common/00action_file.rpy:841
old "Previous file page."
new "Page précédente."
# renpy/common/00action_file.rpy:920
old "Quick save."
new "Sauvegarde rapide."
# renpy/common/00action_file.rpy:939
old "Quick load."
new "Chargement rapide."
# renpy/common/00action_other.rpy:375
old "Language [text]"
new "Langue [text]"
# renpy/common/00director.rpy:708
old "The interactive director is not enabled here."
new "Le réalisateur interactif n'est pas activé ici."
# renpy/common/00director.rpy:1481
old "⬆"
new "⬆"
# renpy/common/00director.rpy:1487
old "⬇"
new "⬇"
# renpy/common/00director.rpy:1551
old "Done"
new "Fait"
# renpy/common/00director.rpy:1561
old "(statement)"
new "(statement)"
# renpy/common/00director.rpy:1562
old "(tag)"
new "(tag)"
# renpy/common/00director.rpy:1563
old "(attributes)"
new "(attributs)"
# renpy/common/00director.rpy:1564
old "(transform)"
new "(transform)"
# renpy/common/00director.rpy:1589
old "(transition)"
new "(transition)"
# renpy/common/00director.rpy:1601
old "(channel)"
new "(channel)"
# renpy/common/00director.rpy:1602
old "(filename)"
new "(fichier)"
# renpy/common/00director.rpy:1631
old "Change"
new "Changer"
# renpy/common/00director.rpy:1633
old "Add"
new "Ajouter"
# renpy/common/00director.rpy:1639
old "Remove"
new "Retirer"
# renpy/common/00director.rpy:1674
old "Statement:"
new "Statement :"
# renpy/common/00director.rpy:1695
old "Tag:"
new "Tag :"
# renpy/common/00director.rpy:1711
old "Attributes:"
new "Attributs :"
# renpy/common/00director.rpy:1729
old "Transforms:"
new "Transforms :"
# renpy/common/00director.rpy:1748
old "Behind:"
new "Sous :"
# renpy/common/00director.rpy:1767
old "Transition:"
new "Transition :"
# renpy/common/00director.rpy:1785
old "Channel:"
new "Channel :"
# renpy/common/00director.rpy:1803
old "Audio Filename:"
new "Fichier audio :"
# renpy/common/00keymap.rpy:300
old "Failed to save screenshot as %s."
new "Échec de sauvegarde de la capture d'écran %s."
# renpy/common/00preferences.rpy:240
old "display"
new "affichage"
# renpy/common/00preferences.rpy:252
old "transitions"
new "transitions"
# renpy/common/00preferences.rpy:261
old "skip transitions"
new "passer les transitions"
# renpy/common/00preferences.rpy:263
old "video sprites"
new "sprites vidéo"
# renpy/common/00preferences.rpy:272
old "show empty window"
new "afficher fenêtre vide"
# renpy/common/00preferences.rpy:281
old "text speed"
new "vitesse du texte"
# renpy/common/00preferences.rpy:289
old "joystick"
new "joystick"
# renpy/common/00preferences.rpy:289
old "joystick..."
new "joystick..."
# renpy/common/00preferences.rpy:296
old "skip"
new "passer"
# renpy/common/00preferences.rpy:299
old "skip unseen [text]"
new "passer [text] non lus"
# renpy/common/00preferences.rpy:304
old "skip unseen text"
new "passer le texte non lu"
# renpy/common/00preferences.rpy:306
old "begin skipping"
new "commencer à passer"
# renpy/common/00preferences.rpy:310
old "after choices"
new "après les choix"
# renpy/common/00preferences.rpy:317
old "skip after choices"
new "passer après les choix"
# renpy/common/00preferences.rpy:319
old "auto-forward time"
new "avancée du temps automatique"
# renpy/common/00preferences.rpy:333
old "auto-forward"
new "avancée automatique"
# renpy/common/00preferences.rpy:340
old "Auto forward"
new "Avancée automatique"
# renpy/common/00preferences.rpy:343
old "auto-forward after click"
new "avancée automatique après un clic"
# renpy/common/00preferences.rpy:352
old "automatic move"
new "mouvement automatique"
# renpy/common/00preferences.rpy:361
old "wait for voice"
new "attendre la voix"
# renpy/common/00preferences.rpy:370
old "voice sustain"
new "maintien de la voix"
# renpy/common/00preferences.rpy:379
old "self voicing"
new "lecture vocale"
# renpy/common/00preferences.rpy:388
old "self voicing volume drop"
new "baisse de volume pendant la lecture vocale"
# renpy/common/00preferences.rpy:396
old "clipboard voicing"
new "voix par presse-papier"
# renpy/common/00preferences.rpy:405
old "debug voicing"
new "voix de debug"
# renpy/common/00preferences.rpy:414
old "emphasize audio"
new "mise en valeur de l'audio"
# renpy/common/00preferences.rpy:423
old "rollback side"
new "côté de rollback"
# renpy/common/00preferences.rpy:433
old "gl powersave"
new "gl économie d'énergie"
# renpy/common/00preferences.rpy:439
old "gl framerate"
new "gl images par seconde"
# renpy/common/00preferences.rpy:442
old "gl tearing"
new "gl tearing"
# renpy/common/00preferences.rpy:445
old "font transform"
new "apparence de la police"
# renpy/common/00preferences.rpy:448
old "font size"
new "taille de police"
# renpy/common/00preferences.rpy:456
old "font line spacing"
new "taille d'espaces"
# renpy/common/00preferences.rpy:464
old "system cursor"
new "curseur système"
# renpy/common/00preferences.rpy:484
old "music volume"
new "volume de la musique"
# renpy/common/00preferences.rpy:485
old "sound volume"
new "volume du son"
# renpy/common/00preferences.rpy:486
old "voice volume"
new "volume des voix"
# renpy/common/00preferences.rpy:487
old "mute music"
new "couper la musique"
# renpy/common/00preferences.rpy:488
old "mute sound"
new "couper le son"
# renpy/common/00preferences.rpy:489
old "mute voice"
new "couper les voix"
# renpy/common/00preferences.rpy:490
old "mute all"
new "couper tout"
# renpy/common/_developer/developer.rpym:43
old "Interactive Director (D)"
new "Réalisateur interactif (D)"
# renpy/common/_developer/developer.rpym:57
old "Show Image Load Log (F4)"
new "Montrer le log ne chargement des images (F4)"
# renpy/common/_developer/developer.rpym:60
old "Hide Image Load Log (F4)"
new "Masquer le log de chargement des images (F4)"
# renpy/common/_developer/developer.rpym:63
old "Image Attributes"
new "Attributs d'image"
# renpy/common/_developer/developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (masqué)"
# renpy/common/_developer/developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# renpy/common/_developer/developer.rpym:154
old "Hide deleted"
new "Masquer les supprimés"
# renpy/common/_developer/developer.rpym:154
old "Show deleted"
new "Montrer les supprimés"
# renpy/common/_developer/developer.rpym:506
old "Type to filter: "
new "Type à filtrer : "
# renpy/common/_developer/developer.rpym:631
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Textures : [tex_count] ([tex_size_mb:.1f] MB)"
# renpy/common/_developer/developer.rpym:635
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "Cache d'images : [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
old " <renpy script statement>: run the statement\n"
new " <renpy script statement>: Exécuter cette déclaration\n"
new " <renpy script statement>: Exécuter cette déclaration\n"
# 00console.rpy:415
old " <python expression or statement>: run the expression or statement"
new " <python expression or statement>: Exécuter cette expression ou cette déclaration"
new " <python expression or statement>: Exécuter cette expression ou cette déclaration"
# 00console.rpy:423
old "clear: clear the console history"
@@ -147,33 +146,52 @@ translate french strings:
# 00console.rpy:427
old "exit: exit the console"
new "exit: quitter la console"
new "exit: quitter la console"
# 00console.rpy:435
old "load <slot>: loads the game from slot"
new "load <slot>: charger la partie de cet emplacement"
new "load <slot>: charger la partie de cet emplacement"
# 00console.rpy:448
old "save <slot>: saves the game in slot"
new "save <slot>: sauvegarder la partie dans cet emplacement "
new "save <slot>: sauvegarder la partie dans cet emplacement "
# 00console.rpy:459
old "reload: reloads the game, refreshing the scripts"
new "reload: Recharge le jeu, rafraîchit les scripts"
new "reload: Recharge le jeu, rafraîchit les scripts"
# 00console.rpy:467
old "watch <expression>: watch a python expression"
new "watch <expression>: surveiller une expression Python"
new "watch <expression>: surveiller une expression Python"
# 00console.rpy:493
old "unwatch <expression>: stop watching an expression"
new "unwatch <expression>: Arrêter la surveillance d’une expression Python"
new "unwatch <expression>: arrêter la surveillance d’une expression Python"
# 00console.rpy:519
old "unwatchall: stop watching all expressions"
new "unwatchall: Arrêter de surveiller toutes les expressions"
new "unwatchall: arrêter de surveiller toutes les expressions"
# 00console.rpy:536
old "jump <label>: jumps to label"
new "jump <label>: Saute jusqu’au label"
new "jump <label>: saute jusqu’au label"
# renpy/common/00console.rpy:814
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
new "watch <expression> : surveille une expression python\n watch short: raccourcit la représentation des expressions (par défaut)\n watch long : affiche la totalité des expressions surveillées"
# renpy/common/00console.rpy:917
old "short: Shorten the representation of objects on the console (default)."
new "short : Raccourcit la représentation des objets sur la console (par défaut)."
# renpy/common/00console.rpy:921
old "long: Print the full representation of objects on the console."
new "long : Affiche la representation entière des objets dans la console."
# renpy/common/00console.rpy:925
old "escape: Enables escaping of unicode symbols in unicode strings."
new "escape : Active l'échappage des symboles unicode dans les chaînes de caractères unicode."
# renpy/common/00console.rpy:929
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
new "unescape : Désactive l'échappage des symboles unicode dans les chaînes de caractères unicode et les affiche telles quelles (par défaut)."
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
new "## L'instruction init offset fait exécuter les instructions d'initialisation de ce fichier tavant les instructions init des autres fichiers."
# gui/game/gui.rpy:17
old "## GUI Configuration Variables"
new "## Variables de Configuration du GUI"
# gui/game/gui.rpy:165
old "## The color of button text in various states."
new "## La couleur du texte des boutons dans différents états."
# gui/game/gui.rpy:171
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
new "## L'alignement horizontal du texte des boutons. (0.0 est à gauche, 0.5 est au centre, 1.0 est à droite)."
# gui/game/gui.rpy:276
old "## The position of the main menu text."
new "## La position du texte du menu principal."
# gui/game/gui.rpy:285
old "## Generic frames."
new "## Frames génériques."
# gui/game/gui.rpy:305
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
new "## Le GUI par défaut utilise uniquement des sliders et des barres de scrolling verticales. Toutes les autres barres ne sont utilisées que dans des screens écrits par l'utilisateur."
# gui/game/gui.rpy:366
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
new "## Le nombre maximum d'entrées en mode NVL que Ren'Py affichera. Quand plus d'entrées sont affichées, les plus anciennes seront retirées."
# gui/game/gui.rpy:402
old "## Localization"
new "## Localisation (traduction et adaptation aux langues et cultures)"
# gui/game/gui.rpy:404
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## Ceci contrôle où un saut de ligne est autorisé. La valeur par défaut convient à la plupart des langues. Une liste des valeurs disponible peut être trouvée sur https://www.renpy.org/doc/html/style_properties.html#style-property-language"
# gui/game/gui.rpy:412
old "## Mobile devices"
new "## Appareils mobiles"
# gui/game/gui.rpy:441
old "## Change the size and spacing of various things."
new "## Changer la taille et l'espacement de diverses choses."
new "Pendant que [what!q], une erreur est survenue:"
old "While [what!qt], an error occured:"
new "Pendant que [what!qt], une erreur est survenue:"
# interface.rpy:356
old "[exception!q]"
@@ -819,7 +818,7 @@ translate french strings:
# navigation.rpy:249
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
new "Aucun commentaire «TODO» trouvé.\n\nPour en créer un, écrivez \"# TODO\" dans le script."
new "Aucun commentaire «TODO» trouvé.\n\nPour en créer un, écrivez \"# TODO\" dans le script."
# navigation.rpy:256
old "The list of names is empty."
@@ -919,7 +918,7 @@ translate french strings:
# preferences.rpy:173
old "Show templates"
new "Afficher les modèles"
new "Afficher les modèles"
# preferences.rpy:174
old "Show edit file section"
@@ -1115,7 +1114,7 @@ translate french strings:
# updater.rpy:108
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
new "Un aperçu de la prochaine version de Ren’Py qui peut être utilisée pour faire des tests et profiter de toutes nouvelles fonctionnalités, mais par pour créer de nouveaux jeux."
new "Un aperçu de la prochaine version de Ren’Py qui peut être utilisée pour faire des tests et profiter de toutes nouvelles fonctionnalités, mais pas pour créer de nouveaux jeux."
# updater.rpy:114
old "Experimental"
@@ -1184,3 +1183,691 @@ translate french strings:
# updater.rpy:195
old "Proceed"
new "Continuer"
# game/add_file.rpy:37
old "The file name may not be empty."
new "Le nom de fichier ne peut pas être vide."
# game/android.rpy:31
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "Un kit de développement Java 8 64-bit/x64 est requis pour construire des paquets Android depuis Windows. Le JDK est différent du JRE, donc il est possible d'avoir Java sans avoir le JDK.\n\n{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}Téléchargez et installez le JDK{/a}, puis redémarrez Ren'Py."
# game/android.rpy:50
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
new "Selectionne le build de Debug, qui peut être atteint depuis Android Studio. Passer d'un build debug à un build release nécessitera une désinstallation sur votre appareil."
# game/android.rpy:51
old "Selects the Release build, which can be uploaded to stores. Changing between debug and release builds requires an uninstall from your device."
new "Sélectionne le build de Release, qui peut être posté sur des magasins d'applications. Passer d'un build debug à un build release nécessitera une désinstallation sur votre appareil."
# game/android.rpy:313
old "Android: [project.current.display_name!q]"
new "Android : [project.current.display_name!q]"
# game/androidstrings.rpy:7
old "{} is not a directory."
new "{} n'est pas un répertoire."
# game/androidstrings.rpy:8
old "{} does not contain a Ren'Py game."
new "{} ne contient pas un jeu Ren'Py."
# game/androidstrings.rpy:9
old "Run configure before attempting to build the app."
new "Lancez la configuration avant d'essayer de construire l'app."
# game/androidstrings.rpy:10
old "Google Play support is enabled, but build.google_play_key is not defined."
new "Le support Google Play est activé, mais build.google_play_key n'est pas défini."
# game/androidstrings.rpy:11
old "Updating project."
new "Mise à jour du projet."
# game/androidstrings.rpy:12
old "Creating assets directory."
new "Création du répertoire d'assets."
# game/androidstrings.rpy:13
old "Creating expansion file."
new "Création du fihier d'expansion."
# game/androidstrings.rpy:14
old "Packaging internal data."
new "Paquetage des données internes."
# game/androidstrings.rpy:15
old "I'm using Gradle to build the package."
new "J'utilise Gradle pour construire le package."
# game/androidstrings.rpy:16
old "Uploading expansion file."
new "Téléversement du fichier d'expansion."
# game/androidstrings.rpy:17
old "The build seems to have failed."
new "Le build semble avoir échoué."
# game/androidstrings.rpy:18
old "Launching app."
new "Lancement de l'app."
# game/androidstrings.rpy:19
old "The build seems to have succeeded."
new "Le build semble avoir réussi."
# game/androidstrings.rpy:20
old "The arm64-v8a version works on newer Android devices, the armeabi-v7a version works on older devices, and the x86_64 version works on the simulator and chromebooks."
new "La version arm64-v8a fonctionne sur les appareils Android les plus récents, la version armeabi-v7a fonctionne sur les plus anciens, et la version x86_64 version fonctionne sur les simulateurs et chromebooks."
# game/androidstrings.rpy:21
old "The universal version works everywhere but is larger."
new "La version universelle fonctionne partout mais pèse plus lourd."
# game/androidstrings.rpy:22
old "What is the full name of your application? This name will appear in the list of installed applications."
new "quel est le nom complet de votre application ? Ce nom apparaîtra dans la liste des applications installées."
# game/androidstrings.rpy:23
old "What is the short name of your application? This name will be used in the launcher, and for application shortcuts."
new "Quel est le nom court de votre application ? Ce nom sera utilisé dans le launcher, et pour les raccourcis d'application."
# game/androidstrings.rpy:24
old "What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot."
new "Quel est le nom du package?\n\nIl est généralement de la forme com.domain.program ou com.domain.email.program. Il doit uniquement contenir des lettres ASCII et des points. Il doit contenir au moins un point."
# game/androidstrings.rpy:25
old "The package name may not be empty."
new "Le nom du package ne peut pas être vide."
# game/androidstrings.rpy:26
old "The package name may not contain spaces."
new "Le nom de package ne peut pas contenir d'espaces."
# game/androidstrings.rpy:27
old "The package name must contain at least one dot."
new "Le nom du package doit contenir au moins un point."
# game/androidstrings.rpy:28
old "The package name may not contain two dots in a row, or begin or end with a dot."
new "Le nom du package ne peut pas contenir deux points de suite, ni commencer ni finir par un point."
# game/androidstrings.rpy:29
old "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
new "Chaque partie du nom de package doit commencer par une lettre, et ne contenir que des lettres, chiffres, et tirets de soulignement."
# game/androidstrings.rpy:30
old "{} is a Java keyword, and can't be used as part of a package name."
new "{} est un mot-clé Java, et ne peut pas faire partie d'un nom de package."
# game/androidstrings.rpy:31
old "What is the application's version?\n\nThis should be the human-readable version that you would present to a person. It must contain only numbers and dots."
new "Quelle est la version de l'application ?\n\nCe devrait être la version lisible par un humain que vous présentez à une personne. Il doit contenir uniquement des chiffres et des points."
# game/androidstrings.rpy:32
old "The version number must contain only numbers and dots."
new "Le numéro de version ne peut contenir que des nombres et des points."
# game/androidstrings.rpy:33
old "What is the version code?\n\nThis must be a positive integer number, and the value should increase between versions."
new "Quel est le code de version ?\n\nCe doit être un nombre entier positif, et la valeur devrait augmenter entre les versions."
# game/androidstrings.rpy:34
old "The numeric version must contain only numbers."
new "Le numéro de version ne peut contenir que des chiffres."
# game/androidstrings.rpy:35
old "How would you like your application to be displayed?"
new "Comment voulez-vous que l'application soit affichée ?"
# game/androidstrings.rpy:36
old "In landscape orientation."
new "En orientation paysage."
# game/androidstrings.rpy:37
old "In portrait orientation."
new "En orientation portrait."
# game/androidstrings.rpy:38
old "In the user's preferred orientation."
new "Dans l'orientation préférée de l'utilisateur."
# game/androidstrings.rpy:39
old "Which app store would you like to support in-app purchasing through?"
new "Sur quel magasin d'applications voulez-vous vous baser pour les achats dans l'application ?"
# game/androidstrings.rpy:40
old "Google Play."
new "Google Play."
# game/androidstrings.rpy:41
old "Amazon App Store."
new "Amazon App Store."
# game/androidstrings.rpy:42
old "Both, in one app."
new "Les deux, en une seule app."
# game/androidstrings.rpy:43
old "Neither."
new "Aucun."
# game/androidstrings.rpy:44
old "Would you like to create an expansion APK?"
new "Voulez-vous créer un APK d'expansion ?"
# game/androidstrings.rpy:45
old "Automatically installing expansion APKs {a=https://issuetracker.google.com/issues/160942333}may not work on Android 11{/a}."
new "Les APK d'expansion s'installant automatiquement {a=https://issuetracker.google.com/issues/160942333}peuvent ne pas fonctionner sur Android 11{/a}."
# game/androidstrings.rpy:46
old "No. Size limit of 100 MB on Google Play, but can be distributed through other stores and sideloaded."
new "Non. Limite de taille de 100 MB sur Google Play, mais il peut être distribué sur d'autres magasins et installé directement."
# game/androidstrings.rpy:47
old "Yes. 2 GB size limit, but won't work outside of Google Play. (Read the documentation to get this to work.)"
new "Oui. Limite de taille de 2 GB, mais ne marchera pas en-dehors de Google Play. (Lisez la documentation pour le faire marcher.)"
# game/androidstrings.rpy:48
old "Do you want to allow the app to access the Internet?"
new "Voulez-vous autoriser l'app à accéder à Internet ?"
# game/androidstrings.rpy:49
old "Do you want to automatically update the Java source code?"
new "Voulez-vous mettre à jour le code source de Java automatiquement ?"
# game/androidstrings.rpy:50
old "Yes. This is the best choice for most projects."
new "Oui. C'est le meilleur choix pour la plupart des projets."
# game/androidstrings.rpy:51
old "No. This may require manual updates when Ren'Py or the project configuration changes."
new "Non. Cela pourra nécessiter des mises à jour manuelles quand Ren'Py ou la configuration du projet changeront."
# game/androidstrings.rpy:52
old "Unknown configuration variable: {}"
new "Variable de configuration inconnue : {}"
# game/androidstrings.rpy:53
old "I'm compiling a short test program, to see if you have a working JDK on your system."
new "Je compile un petit programme de test, pour voir si un JDK fonctionnel est installé sur votre système."
# game/androidstrings.rpy:54
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\nhttps://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Without a working JDK, I can't continue."
new "L'usage de javac pour compiler un programme de test a échoué. Si vous n'avez pas encore installé le JDK, téléchargez-le :\n\nhttps://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot\n\nLe JDK est différent du JRE, il est donc possible que vous ayiez Java sans avoir le JDK. Sans un JDK en état de marche, je ne peux pas continuer."
# game/androidstrings.rpy:55
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\nhttps://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
new "La version de Java sur votre ordinateur n'a pas l'air d'être JDK 8, qui est la seule version supportée par le SDK Android. Si vous avez besoin d'installer JDK 8, vous pouvez le télécharger depuis :\n\nhttps://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot\n\nVous pouvez aussi aussi modifier la variable d'environnement JAVA_HOME pour utiliiser une différente version de Java."
# game/androidstrings.rpy:56
old "The JDK is present and working. Good!"
new "Le JDK est présent et il marche. Super !"
# game/androidstrings.rpy:57
old "The Android SDK has already been unpacked."
new "Le SDK Android a été dépaqueté."
# game/androidstrings.rpy:58
old "Do you accept the Android SDK Terms and Conditions?"
new "Acceptez-vous les termes et conditions du SDK Android ?"
# game/androidstrings.rpy:59
old "I'm downloading the Android SDK. This might take a while."
new "Je télécharge le SDK Android, ce qui peut prendre un moment."
# game/androidstrings.rpy:60
old "I'm extracting the Android SDK."
new "J'extrais le SDK Android."
# game/androidstrings.rpy:61
old "I've finished unpacking the Android SDK."
new "J'ai terminé d'extraire le SDK Android."
# game/androidstrings.rpy:62
old "I'm about to download and install the required Android packages. This might take a while."
new "Je suis sur le point de télécharger et d'installer les paquets Android requis, ce qui peut prendre un moment."
# game/androidstrings.rpy:63
old "I was unable to accept the Android licenses."
new "L'acceptation des licences Android."
# game/androidstrings.rpy:65
old "I was unable to install the required Android packages."
new "L'installation des paquets Android requis a échoué."
# game/androidstrings.rpy:66
old "I've finished installing the required Android packages."
new "L'installation des paquets Android requis est terminée."
# game/androidstrings.rpy:67
old "You set the keystore yourself, so I'll assume it's how you want it."
new "Vous avez vous-même spécifié un keystore, donc je vais supposer que vous le voulez."
# game/androidstrings.rpy:68
old "You've already created an Android keystore, so I won't create a new one for you."
new "Vous avez déjà créé un keystore Android, donc je ne vais pas en créer un pour vous."
# game/androidstrings.rpy:69
old "I can create an application signing key for you. Signing an application with this key allows it to be placed in the Android Market and other app stores.\n\nDo you want to create a key?"
new "Je peux créer une clé de signature d'application pour vous. Signer une application avec cette clé lui permet d'être placée sur l'Android Market et d'autres magasins d'applications.\n\nVoulez-vous crer une clé ?"
# game/androidstrings.rpy:70
old "I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?"
new "Je vais créer une clé dans le fichier android.keystore.\n\nVous devez créer une sauvegarde de ce fichier. Si vous le perdez, vous ne pourrez plus mettre à jour votre application.\n\nVous devez aussi garder cette clé secrète. Si de mauvaises personnes y ont accès, ils pourraient faire de fausses versions de votre application, et potentiellement voler les données de vos utilisateurs.\n\nAllez-vous faire une sauvegarde de android.keystore, et le arder dans un endroit sûr ?"
# game/androidstrings.rpy:71
old "Please enter your name or the name of your organization."
new "Entrez votre nom ou celui de votre organisation."
# game/androidstrings.rpy:72
old "Could not create android.keystore. Is keytool in your path?"
new "Impossible de créer android.keystore. Est-ce que le keytool est dans votre PATH ?"
# game/androidstrings.rpy:73
old "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
new "J'ai terminé la création de android.keystore. Faites-en une sauvegarde, et gardez-le secret."
# game/androidstrings.rpy:74
old "It looks like you're ready to start packaging games."
new "Il semblerait que vous êtes prêt à commencer à empaqueter des jeux."
# game/choose_directory.rpy:140
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python3-tk or tkinter package."
new "Ren'Py n'a pas été capable de lancer python avec tkinter pour choisir le répertoire. Installer le package python3-tk ou tkinter."
# game/choose_directory.rpy:158
old "The selected projects directory is not writable."
new "Le répertoire de projets sélectionné n'est pas ouvert en écriture."
# game/choose_theme.rpy:508
old "changing the theme"
new "changer le thème"
# game/distribute.rpy:1126
old "Signing the Macintosh application...\n(This may take a long time.)"
new "Signature de l'application Macintosh...\n(Ceci peut prendre longtemps.)"
# game/distribute_gui.rpy:157
old "Build Distributions: [project.current.display_name!q]"
new "Construire les Distributions : [project.current.display_name!q]"
# game/dmgcheck.rpy:50
old "Ren'Py is running from a read only folder. Some functionality will not work."
new "Ren'Py est lancé depuis un dossier en lecture seule. Certaines fonctionnalités ne fonctionneront pas."
# game/dmgcheck.rpy:50
old "This is probably because Ren'Py is running directly from a Macintosh drive image. To fix this, quit this launcher, copy the entire %s folder somewhere else on your computer, and run Ren'Py again."
new "C'est probablement parce que Ren'Py est lancé directement depuis une image disque Macintosh. Quittez le lanceur, copier le dossier %s entier quelque part d'autre sur votre ordinateur et relancez Ren'Py."
# game/editor.rpy:152
old "(Recommended) A modern and approachable text editor."
new "(Recommandé) Un éditeur de texte moderne et ergonomique."
# game/editor.rpy:164
old "Up to 150 MB download required."
new "Jusqu'à 150 MB requis pour le téléchargement."
# game/editor.rpy:186
old "System Editor"
new "Éditeur de texte du système"
# game/editor.rpy:202
old "None"
new "Aucun"
# game/editor.rpy:305
old "Edit [text]."
new "Modifier [text]."
# game/front_page.rpy:91
old "PROJECTS:"
new "PROJETS :"
# game/front_page.rpy:198
old "audio"
new "audio"
# game/front_page.rpy:215
old "Open project"
new "Ouvrir le projet"
# game/front_page.rpy:221
old "Actions"
new "Actions"
# game/front_page.rpy:252
old "Web"
new "Web"
# game/front_page.rpy:252
old "(Beta)"
new "(Béta)"
# game/gui7.rpy:339
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Personnalisé. Le GUI est optimié pour un ratio de cadre 16:9."
# game/gui7.rpy:355
old "WIDTH"
new "LARGEUR"
# game/gui7.rpy:355
old "Please enter the width of your game, in pixels."
new "Entrez la largeur de votre jeu, en pixels."
# game/gui7.rpy:365
old "The width must be a number."
new "La largeur doit être un nombre."
# game/gui7.rpy:371
old "HEIGHT"
new "HAUTEUR"
# game/gui7.rpy:371
old "Please enter the height of your game, in pixels."
new "Entrez la hauteur de votre jeu, en pixels."
# game/gui7.rpy:381
old "The height must be a number."
new "La hauteur doit être un nombre."
# game/gui7.rpy:429
old "creating a new project"
new "création d'un nouveau projet"
# game/gui7.rpy:433
old "activating the new project"
new "activation du nouevau projet"
# game/install.rpy:33
old "Could not install [name!t], as a file matching [zipglob] was not found in the Ren'Py SDK directory."
new "Impossible d'installer [name!t], car aucunun fichier correspondant à [zipglob] n'a été trouvé dans le répertoire de Ren'Py."
# game/install.rpy:76
old "Successfully installed [name!t]."
new "Installé [name!t] avec succès."
# game/install.rpy:110
old "Install Libraries"
new "Installer les Bibliothèques"
# game/install.rpy:125
old "This screen allows you to install libraries that can't be distributed with Ren'Py. Some of these libraries may require you to agree to a third-party license before being used or distributed."
new "Ce menu vous permet d'installer des bibliothèques qui ne peuvent pas être distribuées avec Ren'Py. Certaines peuvent requérir d'accepter une licence tierce avant d'être utilisées ou distribuées."
# game/install.rpy:131
old "Install Live2D Cubism SDK for Native"
new "Installer le SDK Live2D Cubism for Native"
# game/install.rpy:140
old "The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-4-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc."
new "Le {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}SDK Cubism for Native{/a} ajoute le support pour l'affichage de modèles Live2D. Placez CubismSdkForNative-4-{i}version{/i}.zip dans le répertoire de Ren'Py, puis cliquez sur Installer. Publier un jeu avec Live2D nécessite d'accepter une licence de Live2D, Inc."
# game/install.rpy:144
old "Live2D in Ren'Py doesn't support the Web, Android x86_64 (including emulators and Chrome OS), and must be added to iOS projects manually. Live2D must be reinstalled after upgrading Ren'Py or installing Android support."
new "Live2D dans Ren'Py ne supporte pas le Web, Android x86_64 (y compris les émulateurs et Chrome OS), et doit être ajouté aux projets iOS manuellement. Live2D doit être réinstallé après avoir mis à jour Ren'Py ou installé le support Android."
# game/install.rpy:151
old "Install Steam Support"
new "Installer le upport Steam"
# game/install.rpy:160
old "Before installing Steam support, please make sure you are a {a=https://partner.steamgames.com/}Steam partner{/a}."
new "Avant d'installer le support Steam, vérifiez que vous êtes bien un {a=https://partner.steamgames.com/}partenaire Steam{/a}."
# game/install.rpy:172
old "Steam support has already been installed."
new "Le support Steam a déjà été installé."
# game/install.rpy:176
old "Open Ren'Py SDK Directory"
new "Ouvrir le répertoire de Ren'Py"
# game/interface.rpy:136
old "Ren'Py Sponsor Information"
new "Information sur les sponsors de Ren'Py Sponsor"
# game/interface.rpy:372
old "opening the log file"
new "ouverture du fichier log"
# game/ios.rpy:233
old "iOS: [project.current.display_name!q]"
new "iOS : [project.current.display_name!q]"
# game/itch.rpy:43
old "Downloading the itch.io butler."
new "Téléchargement du butler itch.io."
# game/navigation.rpy:168
old "Navigate: [project.current.display_name!q]"
new "Explorer : [project.current.display_name!q]"
# game/new_project.rpy:81
old "You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."
new "Vous allez créer un projet en [new_project_language]{#this substitution may be localized}. Changez la langue du launcher dans les préférences pour créer un projet dans une autre langue."
# game/preferences.rpy:143
old "Install libraries"
new "Installer les bibliothèques"
# game/preferences.rpy:145
old "Reset window size"
new "Réinisialiser la taille de la fenêtre"
# game/preferences.rpy:188
old "Force new tutorial"
new "Forcer le nouveau tutoriel"
# game/preferences.rpy:192
old "Legacy options"
new "Options de compatibilité"
# game/preferences.rpy:197
old "Sponsor message"
new "Message des sponsors"
# game/preferences.rpy:199
old "Dark theme"
new "Thème sombre"
# game/translations.rpy:91
old "Translations: [project.current.display_name!q]"
new "Traductions : [project.current.display_name!q]"
# game/translations.rpy:342
old "Extract Dialogue: [project.current.display_name!q]"
new "Extraire les dialogues : [project.current.display_name!q]"
# game/updater.rpy:101
old "The update channel controls the version of Ren'Py the updater will download."
new "Les canaux de mise à jour contrôlent la version de Ren'Py qui sera téléchargée."
# game/updater.rpy:110
old "• This version is installed and up-to-date."
new "• Cette version est installée et à jour."
# game/updater.rpy:118
old "%B %d, %Y"
new "%d %B %Y"
# game/updater.rpy:188
old "Fetching the list of update channels"
new "Vérification de la liste des canaux de mise à jour"
# game/updater.rpy:193
old "downloading the list of update channels"
new "téléchargement de la liste des canaux de mise à jour"
# game/updater.rpy:196
old "parsing the list of update channels"
new "compulsion de la liste des canaux de mise à jour"
# game/web.rpy:242
old "Preparing progressive download"
new "Préparation du téléchargement progressif"
# game/web.rpy:277
old "Web: [project.current.display_name!q]"
new "Web : [project.current.display_name!q]"
# game/web.rpy:307
old "Build Web Application"
new "Construire l'application Web"
# game/web.rpy:308
old "Build and Open in Browser"
new "Construire et ouvrir dans le navigateur"
# game/web.rpy:309
old "Open in Browser"
new "Ouvrir dans le navigateur"
# game/web.rpy:310
old "Open build directory"
new "Ouvrir le répertoire des distributions"
# game/web.rpy:314
old "Support:"
new "Support :"
# game/web.rpy:322
old "RenPyWeb Home"
new "Accueil RenPyWeb"
# game/web.rpy:323
old "Beuc's Patreon"
new "Patreon de Beuc"
# game/web.rpy:341
old "Images and musics can be downloaded while playing. A 'progressive_download.txt' file will be created so you can configure this behavior."
new "Les images et musiques peuvent être téléchargées pendant le jeu. Un fichier 'progressive_download.txt' sera créé pour contrôler cette fonctionnalité."
# game/web.rpy:345
old "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."
new "Les limitations actuelles de la platforme web implique que changer de gros images, fichiers audio ou films peuvent causer des bugs audio ou des pertes de fps, et une baisse de performance en général."
# game/web.rpy:354
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
new "Avant l'empaquetage des apps web, vous devrez télécharger RenPyWeb, le support web de Ren'Py. Voulez-vous télécharger RenPyWeb maintenant ?"
# game/preferences.rpy:206
old "Default theme"
new "Thème par défaut"
# game/preferences.rpy:209
old "Custom theme"
new "Thème personnalisé"
# game/web.rpy:330
old "Images and music can be downloaded while playing. A 'progressive_download.txt' file will be created so you can configure this behavior."
new "Les images et la musique peuvent être téléchargées pendant le jeu. Un fichier 'progressive_download.txt' sera créé pour configurer cette fonction."
# game/web.rpy:334
old "Current limitations in the web platform mean that loading large images may cause audio or framerate glitches, and lower performance in general. Movies aren't supported."
new "Les limitations actuelles de la platforme web signifient que le chargement de grandes images peuvent causer des bugs audio ou des saccades. Les objets 'Movies' ne sont pas supportés."
# game/web.rpy:338
old "There are known issues with Safari and other Webkit-based browsers that may prevent games from running."
new "Des bugs connus avec Safari et d'autres navigateurs basés sur Webkit peuvent empêcher des jeux de fonctionner."
# game/android.rpy:38
old "Please select if you want a Play Bundle (for Google Play), or a Universal APK (for sideloading and other app stores)."
new "Faites le choix entre un Play Bundle (pour Google Play), ou un Universal APK (pour d'autres librairies d'applications)."
# game/android.rpy:53
old "Pairs with a device over Wi-Fi, on Android 11+."
new "Appaire un autre appareil par Wi-Fi, sur Android 11+."
# game/android.rpy:54
old "Connects to a device over Wi-Fi, on Android 11+."
new "Se connecte à un appareil par Wi-Fi, sur Android 11+."
# game/android.rpy:56
old "Builds an Android App Bundle (ABB), intended to be uploaded to Google Play. This can include up to 2GB of data."
new "Construit un Android App Bundle (ABB), fait pour être uploadé sur Google Play. Peut inclure jusqu'à 2GB de données."
# game/android.rpy:57
old "Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data."
new "Construit un paquet Universal APK, fait pour d'autres librairies que Google Play. Peut inclure jusqu'à 2GB de données."
# game/android.rpy:384
old "Play Bundle"
new "Play Bundle"
# game/android.rpy:388
old "Universal APK"
new "Universal APK"
# game/android.rpy:445
old "Wi-Fi Debugging Pair"
new "Debug d'appairage Wi-Fi"
# game/android.rpy:449
old "Wi-Fi Debugging Connect"
new "Debug de connexion Wi-Fi"
# game/android.rpy:537
old "Wi-Fi Pairing Code"
new "Code d'appairage Wi-Fi"
# game/android.rpy:537
old "If supported, this can be found in 'Developer options', 'Wireless debugging', 'Pair device with pairing code'."
new "Si supporté, peut être trouvé dans 'Options de développement', 'Débogage sans fil', 'Appairer appareil avec un code'."
# game/android.rpy:544
old "Pairing Host & Port"
new "Hôte d'appairage & Port"
# game/android.rpy:560
old "IP Address & Port"
new "Addresse IP & Port"
# game/android.rpy:560
old "If supported, this can be found in 'Developer options', 'Wireless debugging'."
new "Si supporté, peut être trouvé dans 'Options de développement', 'Débogage sans fil'."
# game/gui7.rpy:311
old "{size=-4}\n\nThis will not overwrite gui/main_menu.png, gui/game_menu.png, and gui/window_icon.png, but will create files that do not exist.{/size}"
new "{size=-4}\n\nCeci ne remplacera pas gui/main_menu.png, gui/game_menu.png, ou gui/window_icon.png, mais créera des fichiers s'ils n'existent pas.{/size}"
# game/ios.rpy:339
old "There are known issues with the iOS simulator on Apple Silicon. Please test on x86_64 or iOS devices."
new "Des erreurs sont rapportées sur le simulateur d'iOS sur Apple Silicon. Préférez des appareils x86_64 ou iOS."
# game/android.rpy:38
old "RAPT has been installed, but a bundle key hasn't been configured. Please create a new key, or restore bundle.keystore."
new "RAPT a été installé, mais aucune clé de paquet n'a été configurée. Créez une nouvelle clé, ou restaurez bundle.keystore."
# game/androidstrings.rpy:16
old "I'm installing the bundle."
new "J'installe le paquet."
# game/androidstrings.rpy:30
old "How much RAM do you want to allocate to Gradle?\n\nThis must be a positive integer number."
new "Combien de RAM voulez-vous allouer à Gradle ?\n\nEntrez un nombre entier positif."
# game/androidstrings.rpy:31
old "The RAM size must contain only numbers."
new "La taille de RAM ne doit contenir que des chiffres."
# game/androidstrings.rpy:55
old "I can create an application signing key for you. This key is required to create Universal APK for sideloading and stores other than Google Play.\n\nDo you want to create a key?"
new "Je paux vous créer une clé de signature d'application. Cette clé est nécessaire pour créer des Universal APK pour des autres stores que Google Play.\n\nVoulez-vous créer une clé ?"
# game/androidstrings.rpy:59
old "I can create a bundle signing key for you. This key is required to build an Android App Bundle (AAB) for upload to Google Play.\n\nDo you want to create a key?"
new "Je peux vous créer une clé de signature de paquets. Cette clé est nécessaire pour construire un Android App Bundle (AAB) pour uploader sur Google Play.\n\nVoulez-vous créer une clé ?"
# game/androidstrings.rpy:60
old "I will create the key in the bundle.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of bundle.keystore, and keep it in a safe place?"
new "Je vais créer la clé dans le fichier bundle.keystore.\n\nVous devez conserver ce fichier. Sans lui, vous ne pourrez plus mettre à jour votre application.\n\nVous devez aussi la garder cachée. Si des malotrus accèdent à ce fichier, ils pourront faire des faussez versions de votre application, et potentiellement voler les données des utilisateurs.\n\nAllez-vous faire une sauvegarde de bundle.keystore, et le garder bien caché ?"
# game/androidstrings.rpy:61
old "Could not create bundle.keystore. Is keytool in your path?"
new "Impossible de créer bundle.keystore. Est-ce que le keytool est dans votre path ?"
old "## This file contains options that can be changed to customize your game."
@@ -45,9 +44,9 @@ translate french strings:
old "## Sounds and music"
new "## Sons et musiques"
# options.rpy:46
old "## These three variables control which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
new "## Ces trois variables contrôlent quels mixeurs sont affichés au joueur par défaut. Configurer l’un de ceux-ci à False (Faux) cachera le mixeur concerné."
# gui/game/options.rpy:47
old "## These three variables control, among other things, which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
new "## Ces trois variables contrôlent, entre autres, quels mixeurs sont affichés au joueur par défaut. Configurer l’un de ceux-ci à False (Faux) cachera le mixeur concerné."
# options.rpy:55
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
@@ -192,3 +191,15 @@ translate french strings:
# options.rpy:203
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## Le nom d’utilisateur et du projet associé au projet itch.io, séparé par un slash."
# gui/game/options.rpy:31
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
new "## Texte placé sur l'écran \"À propos\" du jeu. Placez le texte entre triples guillemets, et laissez une ligne entre les paragraphes."
old "Enter the name of the script file to create."
new "Geben Sie den Namen der Script-Datei ein, um sie zu erstellen."
new "Geben Sie den Namen der zu erstellenden Script-Datei ein."
# add_file.rpy:31
old "The filename must have the .rpy extension."
@@ -235,7 +235,7 @@ translate german strings:
# distribute.rpy:443
old "Scanning project files..."
new "Projektdateien werden geprüft …"
new "Projektdateien werden geprüft..."
# distribute.rpy:459
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
@@ -247,7 +247,7 @@ translate german strings:
# distribute.rpy:516
old "Scanning Ren'Py files..."
new "Ren’Py-Dateien werden geprüft …"
new "Ren’Py-Dateien werden geprüft..."
# distribute.rpy:569
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
@@ -255,7 +255,7 @@ translate german strings:
# distribute.rpy:752
old "Archiving files..."
new "Dateien werden archiviert …"
new "Dateien werden archiviert..."
# distribute.rpy:1050
old "Unpacking the Macintosh application for signing..."
@@ -335,7 +335,7 @@ translate german strings:
# distribute_gui.rpy:242
old "Force Recompile"
new "Force Recompile"
new "Neu kompilieren"
# distribute_gui.rpy:246
old "Build"
@@ -409,6 +409,10 @@ translate german strings:
old "Open [text] directory."
new "Open [text] directory."
# front_page.rpy:91
old "PROJECTS:"
new "PROJEKTE:"
# front_page.rpy:93
old "refresh"
new "Aktualisieren"
@@ -469,6 +473,10 @@ translate german strings:
old "All script files"
new "Alle Dateien"
# front_page.rpy:221
old "Actions"
new "Aktionen"
# front_page.rpy:223
old "Navigate Script"
new "Skript navigieren"
@@ -479,7 +487,7 @@ translate german strings:
# front_page.rpy:237
old "Change/Update GUI"
new "Change/Update GUI"
new "GUI anpassen/aktualisieren"
# front_page.rpy:239
old "Change Theme"
@@ -487,7 +495,7 @@ translate german strings:
# front_page.rpy:242
old "Delete Persistent"
new "Persistent-Dateien löschen"
new "Persistenz-Dateien löschen"
# front_page.rpy:251
old "Build Distributions"
@@ -511,11 +519,11 @@ translate german strings:
# front_page.rpy:272
old "Checking script for potential problems..."
new "Überprüft Script auf potentielle Probleme …"
new "Überprüfe Script auf potentielle Probleme..."
# front_page.rpy:287
old "Deleting persistent data..."
new "Löscht Persistent-Dateien …"
new "Lösche Persistent-Dateien..."
# front_page.rpy:295
old "Recompiling all rpy files into rpyc files..."
@@ -606,8 +614,8 @@ translate german strings:
new "FEHLER"
# interface.rpy:356
old "While [what!q], an error occured:"
new "Während [what!q] ist ein Fehler aufgetreten:"
old "While [what!qt], an error occured:"
new "Während [what!qt] ist ein Fehler aufgetreten:"
# interface.rpy:356
old "[exception!q]"
@@ -879,7 +887,7 @@ translate german strings:
# preferences.rpy:94
old "Projects directory: [text]"
new "Projects directory: [text]"
new "Projektverzeichnis: [text]"
# preferences.rpy:96
old "Not Set"
@@ -891,7 +899,7 @@ translate german strings:
# preferences.rpy:117
old "Text editor: [text]"
new "Texteditor: [text]"
new "Texteditor: [text]"
# preferences.rpy:133
old "Update Channel:"
@@ -923,11 +931,15 @@ translate german strings:
# preferences.rpy:174
old "Show edit file section"
new "Show edit file section"
new "'Dateien bearbeiten' anzeigen"
# preferences.rpy:175
old "Large fonts"
new "Large fonts"
new "Große Schriftarten"
# preferences.rpy:182
old "Sponsor message"
new "Sponsoren-Hinweis"
# preferences.rpy:178
old "Console output"
@@ -967,7 +979,7 @@ translate german strings:
# project.rpy:242
old "Ren'Py is scanning the project..."
new "Ren’Py scannt das Projekt …"
new "Ren’Py scannt das Projekt..."
# project.rpy:568
old "Launching"
@@ -1031,7 +1043,7 @@ translate german strings:
# translations.rpy:224
old "Ren'Py is generating translations...."
new "Ren’Py erstellt Übersetzungen …"
new "Ren’Py erstellt Übersetzungen..."
# translations.rpy:235
old "Ren'Py has finished generating [language] translations."
@@ -1087,7 +1099,7 @@ translate german strings:
# translations.rpy:374
old "Ren'Py is extracting dialogue...."
new "Ren’Py extrahiert Dialoge …"
new "Ren’Py extrahiert Dialoge..."
# translations.rpy:378
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[persistent.dialogue_format] in the base directory."
new "Kesalahan terjadi ketika : [what!q] adalah :"
old "While [what!qt], an error occured:"
new "Kesalahan terjadi ketika : [what!qt] adalah :"
# interface.rpy:356
old "[exception!q]"
@@ -1253,7 +1253,7 @@ translate indonesian strings:
new "Navigasi: [project.current.display_name!q]"
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
old "You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."
new "Kamu akan membuat bahasa proyek : [new_project_language]. Ganti bahasa launcher di pengaturan untuk membuat proyek dalam bahasa lain."
# preferences.rpy:187
@@ -1272,3 +1272,50 @@ translate indonesian strings:
old "Extract Dialogue: [project.current.display_name!q]"
new "Extrak Dialog: [project.current.display_name!q]"
# game/install.rpy:104
old "Install Libraries"
new "Pasang Libraries"
# game/install.rpy:119
old "This screen allows you to install libraries that can't be distributed with Ren'Py. Some of these libraries may require you to agree to a third-party license before being used or distributed."
new "Bagian ini menuntunmu untuk memasang libraries yang mana tidak didistribusikan langsung oleh Ren'py.Beberapa libraris mungkin memerlukan izin pihak ketiga agar digunakan atau didistrubiskan."
# game/install.rpy:131
old "Install Live2D Cubism SDK for Native"
new "Pasang Live2D Cubism SDK untuk Native"
# game/install.rpy:134
old "The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-4-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc."
new "{a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} menambahkan dukungan untuk menampilkan Live2D. Letakkan CubismSdkForNative-4-{i}version{/i}.zip ke direktori SDK Ren'Py , dan klik Pasang. Mendistrubusikan game dengan menggunakan Live2D membutuhkan izin(license) yang kamu setujui dari Live2D,Inc mu."
# game/install.rpy:138
old "Open Ren'Py SDK Directory"
new "Buka Direktori SDK Ren'Py "
# game/preferences.rpy:138
old "Install libraries"
new "Pasang libraries"
# game/preferences.rpy:140
old "Reset window size"
new "Reset ukuran window"
# game/install.rpy:144
old "Live2D in Ren'Py doesn't support the Web, Android x86_64 (including emulators and Chrome OS), and must be added to iOS projects manually. Live2D must be reinstalled after upgrading Ren'Py or installing Android support."
new "Live2D di Ren'py dukung mendukung versi web, Android x86_64 (termsuk emulator dan Chrome OS), dan harus ditambahkan secara manual/terpisah pada iOS. Live2D harus dipasang ulang apabila melakukan pemuktahiran(upgrade) Ren'py atau pada dukungan tambahan pada Androidnya."
# game/install.rpy:151
old "Install Steam Support"
new "Pasang Dukungan untuk Steam"
# game/install.rpy:160
old "Before installing Steam support, please make sure you are a {a=https://partner.steamgames.com/}Steam partner{/a}."
new "Sebelum memasangkan dukungan untuk Steam,pastikan kamu adalah bagian dari Steam Partner {a=https://partner.steamgames.com/}{/a}."
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "イメージキャッシュ: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# renpy/common/00accessibility.rpy:76
old "Font Override"
new "フォントオーバーライド"
# renpy/common/00accessibility.rpy:80
old "Default"
new "デフォルト"
# renpy/common/00accessibility.rpy:84
old "DejaVu Sans"
new "DejaVu Sans"
# renpy/common/00accessibility.rpy:88
old "Opendyslexic"
new "Opendyslexic"
# renpy/common/00accessibility.rpy:94
old "Text Size Scaling"
new "テキストサイズのスケーリング"
# renpy/common/00accessibility.rpy:100
old "Reset"
new "リセット"
# renpy/common/00accessibility.rpy:105
old "Line Spacing Scaling"
new "行間のスケーリング"
# renpy/common/00accessibility.rpy:117
old "Self-Voicing"
new "セルフボイシング"
# renpy/common/00accessibility.rpy:121
old "Off"
new "オフ"
# renpy/common/00accessibility.rpy:125
old "Text-to-speech"
new "テキストを読む"
# renpy/common/00accessibility.rpy:129
old "Clipboard"
new "クリップボード"
# renpy/common/00accessibility.rpy:133
old "Debug"
new "デバッグ"
# renpy/common/00accessibility.rpy:191
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "このメニューのオプションはアクセス性を改善するためのものです。すべてのゲームで動作するわけではなく、特定の組合せではゲームを正常にレンダリングしないでしょう。これはゲームやエンジンの問題ではありません。フォント変更時に最良の結果を得るには、テキストサイズをオリジナルのままにしてください。"
old "short: Shorten the representation of objects on the console (default)."
new "short: コンソール上のオブジェクトを短く表現する(デフォルト)"
# renpy/common/00console.rpy:690
old "long: Print the full representation of objects on the console."
new "long: コンソール上のオブジェクトを全て表現する"
translate japanese strings:
# renpy/common/00console.rpy:814
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
new "watch <expression>: python式をウォッチ\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
# renpy/common/00console.rpy:925
old "escape: Enables escaping of unicode symbols in unicode strings."
new "escape: ユニコード文字列中でのユニコードシンボルのエスケープを有効化"
# renpy/common/00console.rpy:929
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
new "unescape: ユニコード文字列中でのユニコードシンボルのエスケープを無効化し (default) として表示"
old "An x86 Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
@@ -51,7 +51,7 @@ translate japanese strings:
# android.rpy:35
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
new "「ビルド」を選択して現在のプロジェクトをビルドするか、Android デバイスを接続して「ビルド & インストール」を選択し、ビルド後そのデバイスにインストールしてください。"
new "「ビルド」を選択して現在のプロジェクトをビルドするか、Android デバイスを接続して「ビルドとインストール」を選択し、そのデバイスにインストールしてください。"
# android.rpy:37
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
@@ -135,7 +135,7 @@ translate japanese strings:
# android.rpy:365
old "Configure"
new "設定"
new "構成の設定"
# android.rpy:369
old "Build Package"
@@ -143,7 +143,7 @@ translate japanese strings:
# android.rpy:373
old "Build & Install"
new "ビルド & インストール"
new "ビルドとインストール"
# android.rpy:377
old "Build, Install & Launch"
@@ -606,8 +606,8 @@ translate japanese strings:
new "エラー"
# interface.rpy:356
old "While [what!q], an error occured:"
new "[what!q] 中にエラーが発生しました:"
old "While [what!qt], an error occured:"
new "[what!qt] 中にエラーが発生しました:"
# interface.rpy:356
old "[exception!q]"
@@ -623,7 +623,7 @@ translate japanese strings:
# interface.rpy:386
old "File and directory names must consist of ASCII characters."
new "ファイル、ディレクトリー名はアスキーコードの文字列で構成される必要があります。"
new "ファイル、ディレクトリー名はアスキーコードの文字列でなければなりません。"
# interface.rpy:454
old "PROCESSING"
@@ -1011,7 +1011,7 @@ translate japanese strings:
# translations.rpy:170
old "Merge String Translations"
new "文字列の翻訳を併合"
new "文字列の翻訳を統合"
# translations.rpy:175
old "Replace existing translations"
@@ -1027,7 +1027,7 @@ translate japanese strings:
# translations.rpy:200
old "The extract command allows you to extract string translations from an existing project into a temporary file.\n\nThe merge command merges extracted translations into another project."
new "抽出コマンドは、既存のプロジェクトから文字列の翻訳(台詞以外の翻訳)を一時ファイルとして抽出します。\n\n併合コマンドは、抽出した翻訳を他のプロジェクトに併合します。"
new "抽出コマンドは、このプロジェクトから文字列の翻訳(台詞以外の翻訳)を一時ファイルとして抽出します。\n\n統合コマンドは、抽出した翻訳をこのプロジェクトに統合します。"
# translations.rpy:224
old "Ren'Py is generating translations...."
@@ -1047,11 +1047,11 @@ translate japanese strings:
# translations.rpy:271
old "Ren'Py is merging string translations..."
new "Ren'Py は文字列の翻訳を併合しています…"
new "Ren'Py は文字列の翻訳を統合しています…"
# translations.rpy:274
old "Ren'Py has finished merging [language] string translations."
new "Ren'Py は [language] の文字列の翻訳を併合しました。"
new "Ren'Py は [language] の文字列の翻訳を統合しました。"
# translations.rpy:282
old "Updating default interface translations..."
@@ -1221,7 +1221,7 @@ translate japanese strings:
new "ナビゲーション: [project.current.display_name!q]"
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
old "You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."
new "日本語のプロジェクトを作成します。別の言語のプロジェクトを作成するには、設定でランチャーの言語を変更してください。"
# preferences.rpy:187
@@ -1322,3 +1322,433 @@ translate japanese strings:
old "Actions"
new "アクション"
translate japanese strings:
# game/add_file.rpy:37
old "The file name may not be empty."
new "ファイル名が与えられていません。"
# game/android.rpy:31
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "ウィンドウズでアンドロイドパッケージをビルドするには、 64-bit/x64 Java 8 Development Kit が必要になります。 JDK は JRE とは違うもので、Java には含まれていません。\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}JDK{/a}をダンロード、インストールしてから Ren'Py ランチャーを再起動してください。"
# game/android.rpy:50
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
new "Android Studio からアクセスできるデバッグビルドを選択する。 デバッグビルドとリリースビルドを切り替えるには、デバイスからアンインストールする必要があります。"
# game/android.rpy:51
old "Selects the Release build, which can be uploaded to stores. Changing between debug and release builds requires an uninstall from your device."
new "ストアへアップロード可能なリリースビルドを選択する。 デバッグビルドとリリースビルドを切り替えるには、デバイスからアンインストールする必要があります。"
# game/androidstrings.rpy:7
old "{} is not a directory."
new "{} はディレクトリーではありません。"
# game/androidstrings.rpy:8
old "{} does not contain a Ren'Py game."
new "{} に Ren'Py のゲームは含まれていません。"
# game/androidstrings.rpy:9
old "Run configure before attempting to build the app."
new "アプリをビルドする前に構成を変更する。"
# game/androidstrings.rpy:10
old "Google Play support is enabled, but build.google_play_key is not defined."
new "Google Play サポートは有効になりましたが、 build.google_play_key が定義されていません。"
# game/androidstrings.rpy:11
old "Updating project."
new "プロジェクトを更新しています。"
# game/androidstrings.rpy:12
old "Creating assets directory."
new "アセットディレクトリーを作成しています"
# game/androidstrings.rpy:13
old "Creating expansion file."
new "拡張ファイルを作成しています。"
# game/androidstrings.rpy:14
old "Packaging internal data."
new "内部データをパッケージングしています。"
# game/androidstrings.rpy:15
old "I'm using Gradle to build the package."
new "パッケージのビルドに Gradle を使用しています。"
# game/androidstrings.rpy:16
old "Uploading expansion file."
new "拡張ファイルをアップロードしています。"
# game/androidstrings.rpy:17
old "The build seems to have failed."
new "ビルドに失敗したようです"
# game/androidstrings.rpy:18
old "Launching app."
new "アプリを起動しています。"
# game/androidstrings.rpy:19
old "The build seems to have succeeded."
new "ビルドに成功したようです。"
# game/androidstrings.rpy:20
old "The arm64-v8a version works on newer Android devices, the armeabi-v7a version works on older devices, and the x86_64 version works on the simulator and chromebooks."
new "arm64-v8a version は新しいアンドロイドデバイスで動きます。 armeabi-v7a version は古いデバイスで動きます。 the x86_64 version はシミュレーターやクロームブックで動きます。"
# game/androidstrings.rpy:21
old "What is the full name of your application? This name will appear in the list of installed applications."
new "アプリのフルネームはなんですか? フルネームはインストール済みアプリの一覧に表示されます。"
# game/androidstrings.rpy:22
old "What is the short name of your application? This name will be used in the launcher, and for application shortcuts."
new "アプリのショートネームは何ですか? ショートネームはランチャーやショートカットで使われます。"
# game/androidstrings.rpy:23
old "What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot."
new "パッケージ名はなんですか?\n\nこれは通常 com.domain.program や com.domain.email.program の形を取ります。 ASCII 文字とドットのみで構成され、最低一つのドットを含まなければなりません。"
# game/androidstrings.rpy:24
old "The package name may not be empty."
new "パッケージ名が与えられていません。"
# game/androidstrings.rpy:25
old "The package name may not contain spaces."
new "パッケージ名はスペースを含んではいけません。"
# game/androidstrings.rpy:26
old "The package name must contain at least one dot."
new "パッケージ名は最低一つのドットを含まなければなりません。"
# game/androidstrings.rpy:27
old "The package name may not contain two dots in a row, or begin or end with a dot."
new "パッケージ名は2つのドットが連続したり、最初や最後がドットになってはいけません。"
# game/androidstrings.rpy:28
old "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
new "パッケージ名の各部分は文字から始めまり、文字・数字・アンダースコアのみを使用しなければなりません"
# game/androidstrings.rpy:29
old "{} is a Java keyword, and can't be used as part of a package name."
new "{} は Java のキーワードのため、パッケージ名に使用することはできません。."
# game/androidstrings.rpy:30
old "What is the application's version?\n\nThis should be the human-readable version that you would present to a person. It must contain only numbers and dots."
new "アプリケーションのバージョンはなんですか?\n\nバージョンは他の人に分かりやすい名前にします。数字とドットのみが使用できます。"
# game/androidstrings.rpy:31
old "The version number must contain only numbers and dots."
new "バージョンナンバーは数字とドットのみが使用できます。"
# game/androidstrings.rpy:32
old "What is the version code?\n\nThis must be a positive integer number, and the value should increase between versions."
new "バージョンコードは何ですか?\n\nこれは正の整数で、バージョンが上がるごとに増えていきます。"
# game/androidstrings.rpy:33
old "The numeric version must contain only numbers."
new "バージョンコードは数字のみが使用できます。"
# game/androidstrings.rpy:34
old "How would you like your application to be displayed?"
new "どのようにアプリケーションを表示したいですか?"
# game/androidstrings.rpy:35
old "In landscape orientation."
new "ランドスケープ(横向き)"
# game/androidstrings.rpy:36
old "In portrait orientation."
new "ポートレイト(縦向き)"
# game/androidstrings.rpy:37
old "In the user's preferred orientation."
new "ユーザーが選択した向き"
# game/androidstrings.rpy:38
old "Which app store would you like to support in-app purchasing through?"
new "アプリ内課金をどのアプリストアに対応させますか?"
# game/androidstrings.rpy:39
old "Google Play."
new "Google Play"
# game/androidstrings.rpy:40
old "Amazon App Store."
new "Amazon App Store"
# game/androidstrings.rpy:41
old "Both, in one app."
new "一つのアプリで両方とも"
# game/androidstrings.rpy:42
old "Neither."
new "どちらも対応させない"
# game/androidstrings.rpy:43
old "Would you like to create an expansion APK?"
new "APK 拡張ファイルを作成しますか?"
# game/androidstrings.rpy:44
old "No. Size limit of 100 MB on Google Play, but can be distributed through other stores and sideloaded."
new "いいえ。Google Play では100MBのサイズ制限がありますが、他のストアを通したり、直接配布することが可能です。"
# game/androidstrings.rpy:45
old "Yes. 2 GB size limit, but won't work outside of Google Play. (Read the documentation to get this to work.)"
new "はい。2GBのサイズまで作成できますが、 Google Play 以外では動きません。(ドキュメンテーションを参照してください。)"
# game/androidstrings.rpy:46
old "Do you want to allow the app to access the Internet?"
new "アプリのインターネット接続を許可しますか?"
# game/androidstrings.rpy:47
old "Do you want to automatically update the generated project?"
new "作成したプロジェクトを自動的に更新させますか?"
# game/androidstrings.rpy:48
old "Yes. This is the best choice for most projects."
new "はい。多くのプロジェクトで最良の選択です。"
# game/androidstrings.rpy:49
old "No. This may require manual updates when Ren'Py or the project configuration changes."
new "いいえ。Ren'Py やプロジェクトの構成が変更されるごとに、手動でアップデートする必要があります。"
# game/androidstrings.rpy:50
old "Unknown configuration variable: {}"
new "未知の構成変数: {}"
# game/androidstrings.rpy:51
old "I'm compiling a short test program, to see if you have a working JDK on your system."
new "小さなテストプログラムをコンパイルして、あなたのシステムで JDK が動作するか確認しています。"
# game/androidstrings.rpy:52
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Without a working JDK, I can't continue."
new "テストファイルのコンパイルに javac が利用できません。Java Development Kit をダウンロードしていないなら、\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nからダウンロードしてください。 JDK は JRE とは違うもので、Java には含まれていません。JDK がなければ継続できません。"
# game/androidstrings.rpy:53
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
old "Do you accept the Android SDK Terms and Conditions?"
new "Android SDK の契約内容・条件を承諾しますか?"
# game/androidstrings.rpy:57
old "I'm downloading the Android SDK. This might take a while."
new "Android SDK をダウンロードしています。この処理にはしばらくかかります。"
# game/androidstrings.rpy:58
old "I'm extracting the Android SDK."
new "Android SDK を解凍しています。"
# game/androidstrings.rpy:59
old "I've finished unpacking the Android SDK."
new "Android SDK の解凍を完了しました。"
# game/androidstrings.rpy:60
old "I'm about to download and install the required Android packages. This might take a while."
new "必要な Android パッケージをダウンロードしてインストールしようとしています。この処理にはしばらくかかります。"
# game/androidstrings.rpy:61
old "I was unable to accept the Android licenses."
new "Android ライセンスを承諾出来ませんでした。"
# game/androidstrings.rpy:62
old "I was unable to install the required Android packages."
new "必要な Android パッケージをインストールできませんでした。"
# game/androidstrings.rpy:63
old "I've finished installing the required Android packages."
new "必要な Android パッケージのインストールが終了しました。"
# game/androidstrings.rpy:64
old "You set the keystore yourself, so I'll assume it's how you want it."
new "keystore が設定されているため、あなた自身で設定したいのだと判断しました。"
# game/androidstrings.rpy:65
old "You've already created an Android keystore, so I won't create a new one for you."
new "Android keystore が既に作成済みのため、新しい keystore の作成は行いません。"
# game/androidstrings.rpy:66
old "I can create an application signing key for you. Signing an application with this key allows it to be placed in the Android Market and other app stores.\n\nDo you want to create a key?"
new "アプリケーションに署名するキーを発行できます。このキーでアプリケーションに署名すると、アンドロイドマーケットや他のストアで配布できるようになります。\n\nキーを作成しますか?"
# game/androidstrings.rpy:67
old "I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?"
new "android.keystore ファイルを作成します。\n\nこのファイルはバックアップしてください。もし失くした場合はアプリをアップグレードすることが出来なくなります。\n\nまた、このファイルは安全な場所に保管してください。このファイルが悪意のある人間の手に渡ると、アプリのフェイクバージョンを作られたり、ユーザーデータを盗まれる恐れがあります。\n\nandroid.keystore のバックアップを作成し、安全な場所に保存しますか?"
# game/androidstrings.rpy:68
old "Please enter your name or the name of your organization."
new "あなたの名前か組織名を入力してください。"
# game/androidstrings.rpy:69
old "Could not create android.keystore. Is keytool in your path?"
new "android.keystore を作成できませんでした。keytool があなたのパスに存在しますか?"
# game/androidstrings.rpy:70
old "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
new "android.keystore の作成を終了しました。 このファイルをバックアップして、安全な場所に保管してください。"
# game/androidstrings.rpy:71
old "It looks like you're ready to start packaging games."
new "ゲームのパッケージングの準備が整ったようです。"
# game/choose_theme.rpy:507
old "changing the theme"
new "テーマを変更しています。"
# game/front_page.rpy:252
old "Web"
new "Web"
# game/front_page.rpy:252
old "(Beta)"
new "(Beta)"
# game/front_page.rpy:198
old "audio"
new "audio"
# game/gui7.rpy:429
old "creating a new project"
new "新しいプロジェクトを作成しています。"
# game/gui7.rpy:433
old "activating the new project"
new "新しいプロジェクトを認証しています。"
# game/interface.rpy:372
old "opening the log file"
new "ログファイルを開いています。"
# game/itch.rpy:43
old "Downloading the itch.io butler."
new "itch.io butler をダウンロードしています。"
# game/updater.rpy:101
old "The update channel controls the version of Ren'Py the updater will download."
new "アップロードチャンネルはアップデーターのバージョンをコントロールします。"
# game/updater.rpy:110
old "• This version is installed and up-to-date."
new "• このバージョンは最新の状態でインストールされています。"
# game/updater.rpy:118
old "%B %d, %Y"
new "%B %d, %Y"
# game/updater.rpy:188
old "Fetching the list of update channels"
new "アップデートチャンネルのリストを取得しています。"
# game/updater.rpy:194
old "downloading the list of update channels"
new "アップデートチャンネルのリストをダウンロードしています。"
# game/updater.rpy:198
old "parsing the list of update channels"
new "アップデートチャンネルのリストを解析しています。"
# game/web.rpy:118
old "Web: [project.current.display_name!q]"
new "Web: [project.current.display_name!q]"
# game/web.rpy:148
old "Build Web Application"
new "ウェブアプリケーションをビルドする"
# game/web.rpy:149
old "Build and Open in Browser"
new "ビルドしてブラウザで開く"
# game/web.rpy:150
old "Open in Browser"
new "ブラウザで開く"
# game/web.rpy:151
old "Open build directory"
new "ビルドしたディレクトリーを開く"
# game/web.rpy:155
old "Support:"
new "サポート:"
# game/web.rpy:163
old "RenPyWeb Home"
new "RenPyWeb ホーム"
# game/web.rpy:164
old "Beuc's Patreon"
new "Beuc's Patreon"
# game/web.rpy:182
old "Ren'Py web applications require the entire game to be downloaded to the player's computer before it can start."
new "Ren'Py ウェブアプリケーションは、ゲームをスタートする前に、プレイヤーのコンピューターにデータを全てダウンロードする必要があります。"
# game/web.rpy:186
old "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."
new "現在のウェブプラットホームの限界により、一般的なパフォーマンスの低下や、大きな画像・音声・動画ファイルのロードによる音声やフレームレートの異常が発生します。"
# game/web.rpy:195
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
new "ウェブアプリをパッケージングするために、RenPyWeb (Ren'Py's web support) をダウンロードする必要があります。 RenPyWeb をダウンロードしますか?"
translate japanese strings:
# game/androidstrings.rpy:47
old "Do you want to automatically update the Java source code?"
new "Javaのソースコードを自動的に更新したいですか?"
# game/choose_directory.rpy:93
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python3-tk or tkinter package."
new "Ren'Pyはpythonでtkinterkを実行してディレクトリを選択できません。python3-tkまたはtkinterパッケージをインストールしてください。"
# game/install.rpy:33
old "Could not install [name!t], as a file matching [zipglob] was not found in the Ren'Py SDK directory."
new "Ren'Py SDKディレクトリに[zipglob]にマッチするファイルが見つからなかったため、[name!t]をインストールできませんでした。"
# game/install.rpy:76
old "Successfully installed [name!t]."
new "[name!t]のインストールに成功しました。"
# game/install.rpy:104
old "Install Libraries"
new "ライブラリのインストール"
# game/install.rpy:119
old "This screen allows you to install libraries that can't be distributed with Ren'Py. Some of these libraries may require you to agree to a third-party license before being used or distributed."
new "この画面ではRen'pyと共に配布できないライブラリをダウンロードします。これらのライブラリの一部は使用や配布前にサードパーティーのライセンスに同意が必要です。"
# game/install.rpy:134
old "The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-4-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc."
new "{a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Custom SDK for Native {/a}はLive2Dモデルの表示サポートを追加します。Ren'Py SDK ディレクトリにCubismSdkForNative-4-{i}version{/i}.zipを置き、クリックしてインストールしてください。Live2Dと共にゲームを配布するには Live2D Inc.のライセンスに同意が必要です。"
# game/install.rpy:138
old "Open Ren'Py SDK Directory"
new "Ren'Py SDKディレクトリを開く"
# game/preferences.rpy:138
old "Install libraries"
new "ライブラリのインストール"
# game/preferences.rpy:140
old "Reset window size"
new "ウィンドウサイズリセット"
# game/web.rpy:242
old "Preparing progressive download"
new "プログレッシブダウンロードの準備"
# game/web.rpy:341
old "Images and musics can be downloaded while playing. A 'progressive_download.txt' file will be created so you can configure this behavior."
new "画像と音声がプレイ中にダウンロード可能です。 'progressive_download.txt' ファイルが作成されるのでこれを編集して振舞を設定できます。"
old "The interactive director is not enabled here."
new "인터렉티브 디렉터는 여기에서 사용할 수 없습니다."
# 00director.rpy:1481
old "⬆"
new "⬆"
# 00director.rpy:1487
old "⬇"
new "⬇"
# 00director.rpy:1551
old "Done"
new "완료"
# 00director.rpy:1561
old "(statement)"
new "(명령문)"
# 00director.rpy:1562
old "(tag)"
new "(태그)"
# 00director.rpy:1563
old "(attributes)"
new "(속성)"
# 00director.rpy:1564
old "(transform)"
new "(변환)"
# 00director.rpy:1589
old "(transition)"
new "(전환)"
# 00director.rpy:1601
old "(channel)"
new "(채널)"
# 00director.rpy:1602
old "(filename)"
new "(파일이름)"
# 00director.rpy:1631
old "Change"
new "교체"
# 00director.rpy:1633
old "Add"
new "추가"
# 00director.rpy:1636
old "Cancel"
new "취소"
# 00director.rpy:1639
old "Remove"
new "제거"
# 00director.rpy:1674
old "Statement:"
new "명령문:"
# 00director.rpy:1695
old "Tag:"
new "태그:"
# 00director.rpy:1711
old "Attributes:"
new "속성:"
# 00director.rpy:1729
old "Transforms:"
new "변환:"
# 00director.rpy:1748
old "Behind:"
new "뒤에:"
# 00director.rpy:1767
old "Transition:"
new "전환:"
# 00director.rpy:1785
old "Channel:"
new "채널:"
# 00director.rpy:1803
old "Audio Filename:"
new "오디오 파일이름:"
# 00gui.rpy:370
old "Are you sure?"
new "정말입니까?"
# 00gui.rpy:228
# 00gui.rpy:371
old "Are you sure you want to delete this save?"
new "이 세이브 파일을 지우겠습니까?"
# 00gui.rpy:229
# 00gui.rpy:372
old "Are you sure you want to overwrite your save?"
new "이 세이브 파일에 덮어쓰겠습니까?"
# 00gui.rpy:230
# 00gui.rpy:373
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "불러오기를 하면 저장하지 않은 데이터를 잃게 됩니다.\n파일을 불러올까요?"
# 00gui.rpy:231
# 00gui.rpy:374
old "Are you sure you want to quit?"
new "종료하겠습니까?"
# 00gui.rpy:232
# 00gui.rpy:375
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "메인 메뉴로 돌아가겠습니까?\n저장하지 않은 데이터는 잃게 됩니다."
# 00gui.rpy:233
# 00gui.rpy:376
old "Are you sure you want to end the replay?"
new "리플레이를 종료하겠습니까?"
# 00gui.rpy:234
# 00gui.rpy:377
old "Are you sure you want to begin skipping?"
new "스킵을 시작하겠습니까?"
# 00gui.rpy:235
# 00gui.rpy:378
old "Are you sure you want to skip to the next choice?"
new "다음 선택지가 나타날 때까지 스킵하겠습니까?"
# 00gui.rpy:236
# 00gui.rpy:379
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "다음 선택지가 나타날 때까지 본 적이 없는 대사까지 모두 스킵하겠습니까?"
# 00keymap.rpy:250
# 00keymap.rpy:258
old "Failed to save screenshot as %s."
new "%s 에 스크린샷 저장을 실패했습니다."
# 00keymap.rpy:270
old "Saved screenshot as %s."
new "스크린샷을 %s 에 저장했습니다."
# 00library.rpy:142
# 00library.rpy:146
old "Self-voicing disabled."
new "대사 읽기를 끕니다."
# 00library.rpy:143
# 00library.rpy:147
old "Clipboard voicing enabled. "
new "대사 복사하기를 켭니다. "
# 00library.rpy:144
# 00library.rpy:148
old "Self-voicing enabled. "
new "대사 읽기를 켭니다. "
# 00library.rpy:179
# 00library.rpy:150
old "bar"
new "바"
# 00library.rpy:151
old "selected"
new "선택된"
# 00library.rpy:152
old "viewport"
new "뷰포트"
# 00library.rpy:153
old "horizontal scroll"
new "수평 스크롤"
# 00library.rpy:154
old "vertical scroll"
new "수직 스크롤"
# 00library.rpy:155
old "activate"
new "활성화"
# 00library.rpy:156
old "deactivate"
new "비활성화"
# 00library.rpy:157
old "increase"
new "증가"
# 00library.rpy:158
old "decrease"
new "감소"
# 00library.rpy:193
old "Skip Mode"
new "스킵 모드"
# 00preferences.rpy:207
old "display"
new "화면 모드"
# 00preferences.rpy:219
old "transitions"
new "화면 전환"
# 00preferences.rpy:228
old "skip transitions"
new "화면 전환 스킵"
# 00preferences.rpy:230
old "video sprites"
new "비디오 스프라이트"
# 00preferences.rpy:239
old "show empty window"
new "빈 창 보이기"
# 00preferences.rpy:248
old "text speed"
new "텍스트 속도"
# 00preferences.rpy:256
old "joystick"
new "조이스틱"
# 00preferences.rpy:256
old "joystick..."
new "조이스틱..."
# 00preferences.rpy:263
old "skip"
new "스킵"
# 00preferences.rpy:266
old "skip unseen [text]"
new "읽지 않은 [text] 스킵"
# 00preferences.rpy:271
old "skip unseen text"
new "읽지 않은 텍스트까지 모두 스킵"
# 00preferences.rpy:273
old "begin skipping"
new "스킵 시작"
# 00preferences.rpy:277
old "after choices"
new "선택지 이후에도 스킵"
# 00preferences.rpy:284
old "skip after choices"
new "선택후 스킵"
# 00preferences.rpy:286
old "auto-forward time"
new "자동 진행 시간"
# 00preferences.rpy:300
old "auto-forward"
new "자동 진행"
# 00preferences.rpy:307
old "Auto forward"
new "자동 진행"
# 00preferences.rpy:310
old "auto-forward after click"
new "클릭후 자동 진행"
# 00preferences.rpy:319
old "automatic move"
new "자동 이동"
# 00preferences.rpy:328
old "wait for voice"
new "음성 기다리기"
# 00preferences.rpy:337
old "voice sustain"
new "음성 지속"
# 00preferences.rpy:346
old "self voicing"
new "대사 읽기"
# 00preferences.rpy:355
old "clipboard voicing"
new "대사 복사하기"
# 00preferences.rpy:364
old "debug voicing"
new "음성 디버그"
# 00preferences.rpy:373
old "emphasize audio"
new "오디오 강조"
# 00preferences.rpy:382
old "rollback side"
new "롤백 클릭 옵션"
# 00preferences.rpy:392
old "gl powersave"
new "GL 절전"
# 00preferences.rpy:398
old "gl framerate"
new "GL 프레임 속도"
# 00preferences.rpy:401
old "gl tearing"
new "GL 티어링"
# 00preferences.rpy:413
old "music volume"
new "배경음악 크기"
# 00preferences.rpy:414
old "sound volume"
new "효과음 크기"
# 00preferences.rpy:415
old "voice volume"
new "음성 크기"
# 00preferences.rpy:416
old "mute music"
new "배경음악 크기"
# 00preferences.rpy:417
old "mute sound"
new "효과음 끄기"
# 00preferences.rpy:418
old "mute voice"
new "음성 끄기"
# 00preferences.rpy:419
old "mute all"
new "모두 음소거"
# 00library.rpy:262
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
new "이 프로그램은 MIT 라이선스와 GNU 라이선스를 포함한 여러 가지 라이선스의 적용을 받는 오픈소스 소프트웨어를 포함하고 있습니다. {a=https://www.renpy.org/l/license}이곳{/a}에서 포함된 모든 소프트웨어와 그 소스코드를 확인할 수 있습니다."
@@ -231,12 +550,68 @@ translate korean strings:
# 00preferences.rpy:424
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "대사 읽기 기능이 \"[renpy.display.tts.last]\" 를(을) 말할 것입니다. 'alt+shift+V'를 누르면 비활성화됩니다."
# 00preferences.rpy:426
old "Self-voicing enabled. Press 'v' to disable."
new "대사 읽기 기능을 실행했습니다. 'v' 키를 눌러 종료합니다."
# _compat\gamemenu.rpym:198
old "Empty Slot."
new "빈 슬롯"
# _compat\gamemenu.rpym:355
old "Previous"
new "이전"
# _compat\gamemenu.rpym:362
old "Next"
new "다음"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "인터렉티브 디렉터 (D)"
# _developer\developer.rpym:57
old "Show Image Load Log (F4)"
new "이미지 불러오기 목록을 표시하기 (F4)"
# _developer\developer.rpym:60
old "Hide Image Load Log (F4)"
new "이미지 불러오기 목록을 숨기기 (F4)"
# _developer\developer.rpym:63
old "Image Attributes"
new "이미지 속성"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (hidden)"
# _developer\developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# _developer\developer.rpym:489
old "Type to filter: "
new "필터: "
# _developer\developer.rpym:617
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "텍스쳐: [tex_count] ([tex_size_mb:.1f] MB)"
# _developer\developer.rpym:621
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "이미지 캐시: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# _layout\classic_load_save.rpym:170
old "a"
new "a"
# _layout\classic_load_save.rpym:179
old "q"
new "q"
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "앱스토어와 통신 중\n잠시만 기다려주십시오..."
@@ -333,3 +708,83 @@ translate korean strings:
old "return"
new "돌아가기"
# _developer\developer.rpym:154
old "Hide deleted"
new "삭제항목 숨기기"
# _developer\developer.rpym:154
old "Show deleted"
new "삭제항목 보이기"
# 00accessibility.rpy:128
old "Font Override"
new "글꼴 덮어쓰기"
# 00accessibility.rpy:132
old "Default"
new "기본"
# 00accessibility.rpy:136
old "DejaVu Sans"
new "DejaVu Sans"
# 00accessibility.rpy:140
old "Opendyslexic"
new "Opendyslexic"
# 00accessibility.rpy:146
old "Text Size Scaling"
new "글자 크기 조절"
# 00accessibility.rpy:152
old "Reset"
new "초기화"
# 00accessibility.rpy:158
old "Line Spacing Scaling"
new "줄 간격 조절"
# 00accessibility.rpy:171
old "Self-Voicing"
new "대사 읽기"
# 00accessibility.rpy:175
old "Off"
new "끄기"
# 00accessibility.rpy:179
old "Text-to-speech"
new "텍스트 음성 변환"
# 00accessibility.rpy:183
old "Clipboard"
new "클립보드"
# 00accessibility.rpy:193
old "Self-Voicing Volume Drop"
new "대사 읽기 음소거"
# 00accessibility.rpy:202
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "이 메뉴의 옵션은 접근성을 향상시키기 위한 것입니다. 모든 게임에서 작동하지 않을 수 있고 일부 옵션 조합은 게임을 플레이할 수 없게 만들 수 있으며 이러한 경우 게임이나 엔진의 문제가 아닙니다. 글꼴을 변경할 때 최상의 결과를 얻으려면 글자 크기를 원래대로 유지하십시오."
old "Changes will take effect the next time this program is run."
new "변경사항은 프로그램을 재시작하면 적용됩니다."
# 00gltest.rpy:141
# 00gltest.rpy:213
old "Performance Warning"
new "성능 경고"
# 00gltest.rpy:146
# 00gltest.rpy:218
old "This computer is using software rendering."
new "이 컴퓨터에서는 소프트웨어 렌더링을 사용하고 있습니다."
# 00gltest.rpy:148
# 00gltest.rpy:220
old "This computer is not using shaders."
new "이 컴퓨터에서는 쉐이더를 사용하지 않습니다."
# 00gltest.rpy:150
# 00gltest.rpy:222
old "This computer is displaying graphics slowly."
new "이 컴퓨터에서는 그래픽을 느리게 표시합니다."
# 00gltest.rpy:152
# 00gltest.rpy:224
old "This computer has a problem displaying graphics: [problem]."
new "이 컴퓨터에는 그래픽 표시에 문제가 있습니다. [problem]."
# 00gltest.rpy:157
# 00gltest.rpy:229
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
new "컴퓨터의 그래픽 드라비어가 구버전이거나 제대로 작동하지 않습니다. 그래픽을 느리게 표시하거나 제대로 표시하지 못할 수 있습니다. 다이렉트X를 업데이트하면 이 문제를 해결할 수 있습니다."
# 00gltest.rpy:159
# 00gltest.rpy:231
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "컴퓨터의 그래픽 드라비어가 구버전이거나 제대로 작동하지 않습니다. 그래픽을 느리게 표시하거나 제대로 표시하지 못할 수 있습니다."
# 00gltest.rpy:164
# 00gltest.rpy:236
old "Update DirectX"
new "다이렉트X 업데이트하기"
# 00gltest.rpy:170
# 00gltest.rpy:242
old "Continue, Show this warning again"
new "계속한다. 이 경고를 다시 표시한다."
# 00gltest.rpy:174
# 00gltest.rpy:246
old "Continue, Don't show warning again"
new "계속한다. 이 경고를 다시 표시하지 않는다."
# 00gltest.rpy:192
# 00gltest.rpy:264
old "Updating DirectX."
new "다이렉트X를 업데이트하고 있습니다."
# 00gltest.rpy:196
# 00gltest.rpy:268
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
new "다이렉트X 웹 설치를 시작했습니다. 작업표시줄에 최소화 상태로 시작되었을 수도 있습니다. 설치 안내창에 따라 다이렉트X를 설치하세요."
# 00gltest.rpy:200
# 00gltest.rpy:272
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
new "{b}* 주의{/b}/n 마이크로소프트의 다이렉트X 웹 설치 프로그램은 기본적으로 Bing 툴바를 설치합니다. 이 툴바를 설치하고 싶지 않다면 체크 박스의 체크 표시를 해제하세요."
# 00gltest.rpy:204
# 00gltest.rpy:276
old "When setup finishes, please click below to restart this program."
new "설치가 완료되면 아래 버튼을 눌러 프로그램을 다시 시작하세요."
# 00gltest.rpy:206
# 00gltest.rpy:278
old "Restart"
new "다시 시작"
@@ -102,8 +129,8 @@ translate korean strings:
new "[name]를 보정 중입니다. ([i]/[total])"
# 00gamepad.rpy:58
old "Press or move the [control!r] [kind]."
new "[control!r] [kind]를 누르거나 이동합니다."
old "Press or move the [control!s] [kind]."
new "[control!s] [kind]를 누르거나 이동합니다."
# 00gamepad.rpy:66
old "Skip (A)"
@@ -113,67 +140,98 @@ translate korean strings:
old "Back (B)"
new "뒤로 (B)"
# _errorhandling.rpym:495
old "Open Traceback"
new "Traceback.txt 파일 열기"
# _errorhandling.rpym:529
old "Open"
new "열기"
# _errorhandling.rpym:497
# _errorhandling.rpym:531
old "Opens the traceback.txt file in a text editor."
new "traceback.txt 파일을 스크립트 에디터로 엽니다."
new "traceback.txt 파일을 텍스트 에디터로 엽니다."
# _errorhandling.rpym:499
old "Copy to Clipboard"
new "클립보드로 복사"
# _errorhandling.rpym:533
old "Copy"
new "복사"
# _errorhandling.rpym:501
# _errorhandling.rpym:535
old "Copies the traceback.txt file to the clipboard."
new "traceback.txt 파일을 클립보드로 복사합니다."
# _errorhandling.rpym:519
# _errorhandling.rpym:562
old "An exception has occurred."
new "예외가 발생했습니다."
# _errorhandling.rpym:538
# _errorhandling.rpym:582
old "Rollback"
new "롤백"
# _errorhandling.rpym:540
# _errorhandling.rpym:584
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "게임을 저장하거나 다른 선택지를 선택할 수 있도록 이전으로 롤백합니다."
# _errorhandling.rpym:543
# _errorhandling.rpym:587
old "Ignore"
new "무시"
# _errorhandling.rpym:545
# _errorhandling.rpym:591
old "Ignores the exception, allowing you to continue."
new "예외를 무시하고 게임을 계속합니다."
# _errorhandling.rpym:593
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "예외를 무시하고 게임을 계속합니다. 간혹 오류가 추가 발생할 수 있습니다."
# _errorhandling.rpym:548
# _errorhandling.rpym:597
old "Reload"
new "다시 불러오기"
# _errorhandling.rpym:550
# _errorhandling.rpym:599
old "Reloads the game from disk, saving and restoring game state if possible."
new "현재 상태를 저장한 뒤 복원하여 게임을 디스크에서 다시 불러옵니다."
# _errorhandling.rpym:560
# _errorhandling.rpym:602
old "Console"
new "콘솔"
# _errorhandling.rpym:604
old "Opens a console to allow debugging the problem."
new "콘솔을 열어 문제를 디버깅합니다."
# _errorhandling.rpym:614
old "Quits the game."
new "게임을 종료합니다."
# _errorhandling.rpym:582
# _errorhandling.rpym:638
old "Parsing the script failed."
new "스크립트 해석 실패."
# _errorhandling.rpym:606
old "Open Parse Errors"
new "Error.txt 파일 열기"
# _errorhandling.rpym:608
# _errorhandling.rpym:664
old "Opens the errors.txt file in a text editor."
new "errors.txt 파일을 스크립트 에디터로 엽니다."
new "errors.txt 파일을 텍스트 에디터로 엽니다."
# _errorhandling.rpym:612
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "errors.txt 파일을 클립보드로 복사합니다."
# _errorhandling.rpym:542
old "Copy BBCode"
new "BB코드 복사"
# _errorhandling.rpym:544
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "traceback.txt 파일을 https://lemmasoft.renai.us/ 같은 포럼에서 사용하는 BB코드로 클립보드에 복사합니다."
# _errorhandling.rpym:546
old "Copy Markdown"
new "마크다운 복사"
# _errorhandling.rpym:548
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
new "traceback.txt 파일을 디스코드(Discord) 마크다운으로 클립보드에 복사합니다."
# _errorhandling.rpym:683
old "Copies the errors.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "errors.txt 파일을 https://lemmasoft.renai.us/ 같은 포럼에서 사용하는 BB코드로 클립보드에 복사합니다."
# _errorhandling.rpym:687
old "Copies the errors.txt file to the clipboard as Markdown for Discord."
new "errors.txt 파일을 디스코드(Discord) 마크다운으로 클립보드에 복사합니다."
old "## The init offset statement causes the init code in this file to run before init code in any other file."
new "## 이 파일에서 init offset 문을 사용하면 이 파일의 init 코드가 다른 파일의 init 코드보다 먼저 실행됩니다."
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
new "## 이 파일에서 init offset 문을 사용하면 이 파일의 초기화 문이 다른 파일의 init 코드보다 먼저 실행됩니다."
# gui.rpy:9
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## gui.init의 호출은 스타일을 합리적인 기본값으로 재설정하고, 게임의 너비(width)와 높이(height)를 설정합니다."
# gui.rpy:17
old "## GUI Configuration Variables"
new "## GUI 설정 변수"
# gui.rpy:21
old "## Colors"
new "## 색상"
@@ -101,311 +104,330 @@ translate korean strings:
old "## The images used for the main and game menus."
new "## 이미지들은 메인(main)과 게임 메뉴(game menu)에 사용됩니다."
# gui.rpy:92
old "## Should we show the name and version of the game?"
new "## 게임의 이름과 버전을 보여줘야 할까요?"
# gui.rpy:96
# gui.rpy:93
old "## Dialogue"
new "## 대사"
# gui.rpy:98
# gui.rpy:95
old "## These variables control how dialogue is displayed on the screen one line at a time."
new "## 이러한 변수들은 한 번에 한 줄의 대사가 어떻게 화면에 표시되는지 제어합니다."
# gui.rpy:101
# gui.rpy:98
old "## The height of the textbox containing dialogue."
new "## 대사를 포함하는 텍스트 박스의 높이입니다."
# gui.rpy:104
# gui.rpy:101
old "## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is center, and 1.0 is the bottom."
new "## 화면에 텍스트박스를 세로로 배치합니다. 0.0은 최상단, 0.5는 중앙, 그리고 1.0은 최하단입니다."
# gui.rpy:109
# gui.rpy:106
old "## The placement of the speaking character's name, relative to the textbox. These can be a whole number of pixels from the left or top, or 0.5 to center."
new "## 말하는 캐릭터의 이름을 텍스트 박스를 기준으로 배치합니다. 이것은 좌측이나 최상단으로부터 전체 픽셀값의 숫자가 되거나, 0.5로 중앙이 될 수 있습니다."
# gui.rpy:114
# gui.rpy:111
old "## The horizontal alignment of the character's name. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## 캐릭터들의 이름을 수평으로 정렬합니다. 이것은 0.0으로 좌측 정렬, 0.5로 중앙, 그리고 1.0으로 우측 정렬될 수 있습니다."
# gui.rpy:118
# gui.rpy:115
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## 캐릭터들의 이름이 들어 있는 박스의 너비, 높이, 그리고 테두리입니다. 혹은 그것을 None으로 자동 설정할 수 있습니다."
# gui.rpy:123
# gui.rpy:120
old "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## 캐릭터의 이름이 들어 있는 박스의 테두리를 좌측, 상단, 우측, 하단의 순서로 정합니다."
# gui.rpy:127
# gui.rpy:124
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## 만약 참(True)이면, 네임박스의 배경은 바둑판식으로 배열(tiled)될 것이고, 거짓(False)이면, 네임박스의 배경은 채워질(scaled) 것입니다."
# gui.rpy:132
# gui.rpy:129
old "## The placement of dialogue relative to the textbox. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
new "## 텍스트박스에서 대사의 위치입니다. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
# gui.rpy:138
# gui.rpy:135
old "## The maximum width of dialogue text, in pixels."
new "## 픽셀값에서 대사의 최대 너비입니다."
# gui.rpy:141
# gui.rpy:138
old "## The horizontal alignment of the dialogue text. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## 대사 글자의 수평 정렬입니다. 이것은 0.0으로 좌측 정렬, 0.5로 중앙, 그리고 1.0으로 우측 정렬이 될 수 있습니다."
# gui.rpy:146
# gui.rpy:143
old "## Buttons"
new "## 버튼들"
# gui.rpy:148
# gui.rpy:145
old "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
new "## 이러한 변수들은 GUI/버튼에서 이미지 파일들과 함께 어떻게 버튼이 표시되는지 제어합니다."
# gui.rpy:151
# gui.rpy:148
old "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
new "## 픽셀값에서 버튼의 너비와 높이입니다. 만약 None이면, 렌파이가 크기를 계산합니다."
# gui.rpy:155
# gui.rpy:152
old "## The borders on each side of the button, in left, top, right, bottom order."
new "## 좌측, 상단, 우측, 하단의 순서에서 버튼의 테두리 값입니다."
# gui.rpy:158
# gui.rpy:155
old "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
new "## 만약 참(True)이면, 배경 이미지는 바둑판식으로 배열(tiled)될 것입니다. 만약 거짓(False)이면, 배경 이미지는 선으로 채워질(scaled) 것입니다."
# gui.rpy:162
# gui.rpy:159
old "## The font used by the button."
new "## 버튼에 사용된 글자의 폰트입니다."
# gui.rpy:165
# gui.rpy:162
old "## The size of the text used by the button."
new "## 버튼에 사용된 글자의 크기입니다."
# gui.rpy:179
# gui.rpy:165
old "## The color of button text in various states."
new "## 다양한 상태의 버튼 글자의 색상입니다."
# gui.rpy:171
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
new "## 버튼 글자의 수평 정렬(0.0은 왼쪽,0.5은 가운데,1.0은 오른쪽)입니다."
# gui.rpy:176
old "## These variables override settings for different kinds of buttons. Please see the gui documentation for the kinds of buttons available, and what each is used for."
new "## 이러한 변수는 다른 종류의 버튼 설정을 덮어씌웁니다. 사용 가능한 버튼의 종류와, 각각 무엇을 위해 사용하는지는 gui 문서를 확인해주세요."
# gui.rpy:183
# gui.rpy:180
old "## These customizations are used by the default interface:"
new "## 이러한 사용자 지정은 기본 인터페이스에 사용됩니다:"
# gui.rpy:198
# gui.rpy:195
old "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
new "## 당신은 또한 설정된 이름의 변수를 추가함으로써 당신만의 커스텀을 추가할 수 있습니다. 예를 들어, 다음 행의 주석 표시를 제거하여 탐색(navigation) 버튼의 너비를 설정할 수 있습니다."
# gui.rpy:205
# gui.rpy:202
old "## Choice Buttons"
new "## 선택 버튼들"
# gui.rpy:207
# gui.rpy:204
old "## Choice buttons are used in the in-game menus."
new "## 선택 버튼은 인-게임 메뉴에 사용됩니다."
# gui.rpy:220
# gui.rpy:217
old "## File Slot Buttons"
new "## 파일 슬롯 버튼"
# gui.rpy:222
# gui.rpy:219
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## 파일 슬롯 버튼은 버튼의 특별한 종류입니다. 그것은 썸네일 이미지나 저장 슬롯의 콘텐츠를 설명하는 글자를 포함합니다. GUI/버튼에서 저장 슬롯은 버튼의 다른 종류와 같은 이미지 파일을 사용합니다."
# gui.rpy:226
# gui.rpy:223
old "## The save slot button."
new "## 저장 슬롯 버튼입니다."
# gui.rpy:234
# gui.rpy:233
old "## The width and height of thumbnails used by the save slots."
new "## 저장 슬롯에 사용되는 썸네일의 너비와 높이입니다."
# gui.rpy:238
# gui.rpy:237
old "## The number of columns and rows in the grid of save slots."
new "## 저장 슬롯의 그리드(grid)에서 행(rows)과 열(columns)의 갯수입니다."
# gui.rpy:243
# gui.rpy:242
old "## Positioning and Spacing"
new "## 위치와 간격"
# gui.rpy:245
# gui.rpy:244
old "## These variables control the positioning and spacing of various user interface elements."
new "## 이러한 변수들은 다양한 사용자 인터페이스 요소들의 위치와 간격을 제어합니다."
# gui.rpy:248
# gui.rpy:247
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## 화면의 왼쪽을 기준으로 하는 네비게이션 버튼의 왼쪽 위치입니다."
# gui.rpy:252
# gui.rpy:251
old "## The vertical position of the skip indicator."
new "## 스킵 표시기(skip indicator)의 수직 위치입니다."
# gui.rpy:255
# gui.rpy:254
old "## The vertical position of the notify screen."
new "## 통지(notify) 스크린의 수직 위치입니다."
# gui.rpy:258
# gui.rpy:257
old "## The spacing between menu choices."
new "## 선택지의 메뉴 선택 간의 간격입니다."
# gui.rpy:261
# gui.rpy:260
old "## Buttons in the navigation section of the main and game menus."
new "## 메인과 게임 메뉴에서 네비게이션 섹션의 버튼들 간의 간격입니다."
# gui.rpy:264
# gui.rpy:263
old "## Controls the amount of spacing between preferences."
new "## 환경 설정들 간의 간격을 제어합니다."
# gui.rpy:267
# gui.rpy:266
old "## Controls the amount of spacing between preference buttons."
new "## 환경 설정 버튼들 사이의 간격을 제어합니다."
# gui.rpy:270
# gui.rpy:269
old "## The spacing between file page buttons."
new "## 파일 페이지 버튼들 간의 간격입니다."
# gui.rpy:273
# gui.rpy:272
old "## The spacing between file slots."
new "## 파일 슬롯들 간의 간격입니다."
# gui.rpy:277
# gui.rpy:275
old "## The position of the main menu text."
new "## 메인 메뉴 글자의 위치입니다."
# gui.rpy:279
old "## Frames"
new "## 프레임들"
# gui.rpy:279
# gui.rpy:281
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## 이러한 변수들은 오버레이되거나 창이 없을 때 보여지는 사용자 인터페이스 구성 요소들을 포함하는 프레임을 제어합니다."
# gui.rpy:282
# gui.rpy:284
old "## Generic frames that are introduced by player code."
new "## 플레이어 코드에 의해 소개되는 일반 프레임."
# gui.rpy:285
# gui.rpy:287
old "## The frame that is used as part of the confirm screen."
new "## 프레임은 확인(confirm) 화면의 일부로 사용됩니다."
# gui.rpy:288
# gui.rpy:290
old "## The frame that is used as part of the skip screen."
new "## 프레임은 스킵(skip) 화면의 일부로 사용됩니다."
# gui.rpy:291
# gui.rpy:293
old "## The frame that is used as part of the notify screen."
new "## 프레임은 통지(notify) 화면의 일부로 사용됩니다."
# gui.rpy:294
# gui.rpy:296
old "## Should frame backgrounds be tiled?"
new "## 프레임 배경들은 바둑판식으로 배열해야 할까요?"
# gui.rpy:298
# gui.rpy:230
old "## Bars, Scrollbars, and Sliders"
new "## 막대, 스크롤바, 슬라이더"
# gui.rpy:300
# gui.rpy:302
old "## These control the look and size of bars, scrollbars, and sliders."
new "## 이러한 설정은 막대와 스크롤바, 그리고 슬라이더의 보여지는 것과 크기를 제어합니다."
# gui.rpy:302
# gui.rpy:304
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written code."
new "## 기본 GUI는 슬라이더와 세로 스크롤바만 사용합니다. 다른 모든 막대들은 창작자가 작성한 코드에서 사용됩니다."
# gui.rpy:305
# gui.rpy:307
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## 수평 막대, 스크롤바, 슬라이더의 높이. 수직 막대, 스크롤바, 슬라이더의 너비."
# gui.rpy:311
# gui.rpy:313
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## 막대 이미지가 바둑판식 배열돼야 하면 참(True)입니다. 선으로 채워져야 한다면 거짓(False)입니다."
# gui.rpy:316
# gui.rpy:318
old "## Horizontal borders."
new "## 수평 테두리입니다."
# gui.rpy:321
# gui.rpy:323
old "## Vertical borders."
new "## 수직 테두리입니다."
# gui.rpy:326
# gui.rpy:328
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## GUI에서 스크롤할 수 없는 스크롤 막대로 뭘 할 수 있나요? \"hide\"로 그것들을 숨기고, None은 그것들을 보여줍니다."
# gui.rpy:331
old "## History"
new "## 다시보기"
# gui.rpy:333
old "## The history screen displays dialogue that the player has already dismissed."
new "## 다시보기 화면은 사용자가 이미 확인한 다이얼로그를 표시합니다."
old "## History"
new "## 대사록"
# gui.rpy:335
old "## The history screen displays dialogue that the player has already dismissed."
new "## 대사록 화면은 사용자가 이미 확인한 다이얼로그를 표시합니다."
# gui.rpy:337
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## 렌파이가 보관할 다시보기의 블록 갯수입니다."
new "## 렌파이가 보관할 대사록의 블록 갯수입니다."
# gui.rpy:338
# gui.rpy:340
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## 다시보기 화면 항목의 높이를 지정하거나 None으로 하여 높이를 성능에 맡길 수 있습니다."
new "## 대사록 화면 항목의 높이를 지정하거나 None으로 하여 높이를 성능에 맡길 수 있습니다."
# gui.rpy:342
# gui.rpy:344
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## 말하는 캐릭터의 이름을 나타내는 레이블의 위치, 너비, 그리고 정렬입니다."
# gui.rpy:349
# gui.rpy:351
old "## The position, width, and alignment of the dialogue text."
new "## 대사 글자의 위치, 너비, 그리고 정렬입니다."
# gui.rpy:356
# gui.rpy:358
old "## NVL-Mode"
new "## NVL-모드"
# gui.rpy:358
# gui.rpy:360
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## NVL-모드 화면은 NVL-모드 캐릭터들에 의한 대화를 화면에 표시합니다."
# gui.rpy:360
# gui.rpy:362
old "## The borders of the background of the NVL-mode background window."
new "## NVL-모드 배경 창에서 배경의 테두리입니다."
# gui.rpy:363
# gui.rpy:365
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
new "## 렌파이가 표시할 NVL-mode 항목의 최대 수입니다. 설정보다 많은 항목이 표시되면 가장 오래된 항목이 제거됩니다."
# gui.rpy:369
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## NVL-모드 항목의 높이입니다. 이것을 None으로 설정하면 항목들은 동적으로 높이를 조정합니다."
# gui.rpy:367
# gui.rpy:373
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## gui.nvl_height 값이 None일 때 NVL-모드 항목들, 그리고 NVL-모드 항목들과 NVL-모드 메뉴간의 간의 간격입니다."
# gui.rpy:384
# gui.rpy:390
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## nvl_thought 글자의 위치, 너비, 정렬(nvl_narrator 캐릭터에 의해 표시되는 글자)입니다."
# gui.rpy:391
# gui.rpy:397
old "## The position of nvl menu_buttons."
new "## NVL 메뉴 버튼의 위치입니다."
# gui.rpy:403
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## 이것은 휴대전화와 태블릿에서 쉽게 터지할 수 있도록 빠른(Quick) 버튼들의 크기를 크게 합니다."
# gui.rpy:401
old "## Localization"
new "## 현지화"
# gui.rpy:409
# gui.rpy:403
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## 줄 바꿈이 허용되는 위치를 제어합니다. 기본값은 대부분의 언어에 적합합니다. 사용 가능한 값 목록은 https://www.renpy.org/doc/html/style_properties.html#style-property-language 에서 찾을 수 있습니다."
# gui.rpy:411
old "## Mobile devices"
new "## 모바일 기기"
# gui.rpy:416
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## 이것은 휴대전화와 태블릿에서 쉽게 터치할 수 있도록 빠른(Quick) 버튼들의 크기를 크게 합니다."
# gui.rpy:422
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## 이것은 휴대전화에서 다양한 GUI 요소들의 크기와 간격을 쉽게 보일 수 있도록 변경합니다."
# gui.rpy:413
# gui.rpy:426
old "## Font sizes."
new "## 글자 크기들."
# gui.rpy:421
# gui.rpy:434
old "## Adjust the location of the textbox."
new "## 텍스트박스의 위치를 조정합니다."
# gui.rpy:427
# gui.rpy:440
old "## Change the size and spacing of items in the game menu."
old "## This file contains options that can be changed to customize your game."
@@ -34,162 +33,169 @@ translate korean strings:
new "## 게임의 버전입니다."
# options.rpy:31
old "## Text that is placed on the game's about screen. To insert a blank line between paragraphs, write \\n\\n."
new "## 게임의 about 스크린에 배치되는 텍스트입니다. 단락 사이에 빈 줄을 넣으려면 \\n\\n를 적으십시오."
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
new "## 게임의 about 스크린에 배치되는 텍스트입니다. 텍스트를 삼중 따옴표 사이에 배치하고 단락 사이에 빈 줄을 남겨 둡니다."
# options.rpy:37
# options.rpy:38
old "## A short name for the game used for executables and directories in the built distribution. This must be ASCII-only, and must not contain spaces, colons, or semicolons."
new "## 배포판의 실행 파일과 디렉토리에 사용되는 게임의 약식 이름. 이것은 ASCII 전용이어야 하며 공백, 콜론 또는 세미콜론을 포함해서는 안 됩니다."
# options.rpy:44
# options.rpy:45
old "## Sounds and music"
new "## 음악과 음향"
# options.rpy:46
# options.rpy:47
old "## These three variables control which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
new "## 이 세 가지 변수는 기본적으로 플레이어에 표시되는 믹서를 제어합니다. 이들 중 하나를 False로 설정하면 해당 믹서가 숨겨집니다."
# options.rpy:55
# options.rpy:56
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
new "## 사용자가 음향 또는 음성 채널에서 테스트 사운드를 재생할 수 있게 하려면 아래 줄의 주석을 제거하고 이를 사용하여 재생할 샘플 사운드를 설정하십시오."
# options.rpy:62
# options.rpy:63
old "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. This file will continue playing into the game, until it is stopped or another file is played."
new "## 플레이어가 주 메뉴에 있을 때 재생할 오디오 파일을 설정하려면 다음 줄의 주석 처리를 제거하십시오. 이 파일은 중지되거나 다른 파일이 재생 될 때까지 계속 재생합니다."
# options.rpy:69
# options.rpy:70
old "## Transitions"
new "## 번역"
# options.rpy:71
# options.rpy:72
old "## These variables set transitions that are used when certain events occur. Each variable should be set to a transition, or None to indicate that no transition should be used."
new "## 이러한 변수는 특정 이벤트가 발생할 때 사용되는 전환을 설정합니다. 각 변수는 전환으로 설정해야 하며, 전환을 사용하지 말아야 한다는 것을 나타내려면 None으로 설정해야 합니다."
# options.rpy:75
# options.rpy:76
old "## Entering or exiting the game menu."
new "## 게임 메뉴에 진입하거나 나갑니다."
# options.rpy:81
# options.rpy:82
old "## Between screens of the game menu."
new "## 게임 메뉴 화면 사이입니다."
# options.rpy:87
old "## A transition that is used after a game has been loaded."
new "## 게임이 로드된 후 사용되는 전환입니다."
# options.rpy:86
# options.rpy:92
old "## Used when entering the main menu after the game has ended."
new "## 게임 종료 후 주 메뉴에 진입할 때 사용됩니다."
# options.rpy:91
# options.rpy:97
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
new "## 게임을 시작할 때 사용되는 전환을 설정하는 변수가 없습니다. 대신, 초기 장면을 표시한 후 with 문을 사용하십시오."
# options.rpy:96
# options.rpy:102
old "## Window management"
new "## 창 관리"
# options.rpy:98
# options.rpy:104
old "## This controls when the dialogue window is displayed. If \"show\", it is always displayed. If \"hide\", it is only displayed when dialogue is present. If \"auto\", the window is hidden before scene statements and shown again once dialogue is displayed."
new "## 이것은 대사 창이 표시됐을 때 제어합니다. 만약 \"show\"면, 그것은 상항 표시됩니다. 만약 \"hide\"면, 그것은 대사가 주어질 때만 표시됩니다. 만약 \"auto\"면, 창은 장면(scene) 문 앞에 숨겨져 대화 상자가 표시되면 다시 표시됩니다."
# options.rpy:103
# options.rpy:109
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## 게임이 시작된 후에는 \"window show\", \"window hide\", 그리고 \"window auto\" 문을 사용하여 변경할 수 있습니다."
# options.rpy:109
# options.rpy:115
old "## Transitions used to show and hide the dialogue window"
new "## 대화 창을 표시하고 숨기는 데 사용되는 전환"
# options.rpy:115
# options.rpy:121
old "## Preference defaults"
new "## 환경설정 기본값"
# options.rpy:117
# options.rpy:123
old "## Controls the default text speed. The default, 0, is infinite, while any other number is the number of characters per second to type out."
new "## 기본 글자 속도를 제어합니다. 기본적으로, 0은 즉시이며 다른 숫자는 초당 입력 할 문자 수입니다."
# options.rpy:123
# options.rpy:129
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## 기본 auto-forward 지연 시간입니다. 숫자가 클수록 대기 시간이 길어지며, 0 ~ 30이 유효한 범위가 됩니다."
# options.rpy:129
# options.rpy:135
old "## Save directory"
new "## 세이브 디렉토리"
# options.rpy:131
# options.rpy:137
old "## Controls the platform-specific place Ren'Py will place the save files for this game. The save files will be placed in:"
new "## 렌파이는 이 게임에 대한 저장 파일을 플랫폼 별로 배치합니다. 세이브 파일들은 여기에 있습니다:"
# options.rpy:134
# options.rpy:140
old "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
new "## 윈도우즈: %APPDATA\\RenPy\\<config.save_directory>"
# options.rpy:136
# options.rpy:142
old "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
new "## 매킨토시: $HOME/Library/RenPy/<config.save_directory>"
# options.rpy:138
# options.rpy:144
old "## Linux: $HOME/.renpy/<config.save_directory>"
new "## 리눅스: $HOME/.renpy/<config.save_directory>"
# options.rpy:140
# options.rpy:146
old "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
new "## 이것은 일반적으로 변경해서는 안 되며, 항상 표현형식이 아닌 정확한 문자열이어야 합니다."
# options.rpy:146
# options.rpy:152
old "## Icon ########################################################################'"
new "## 아이콘 #######################################################################'"
# options.rpy:148
# options.rpy:154
old "## The icon displayed on the taskbar or dock."
new "## 작업 표시 줄 또는 독에 표시되는 아이콘."
# options.rpy:153
# options.rpy:159
old "## Build configuration"
new "## 빌드 구성"
# options.rpy:155
# options.rpy:161
old "## This section controls how Ren'Py turns your project into distribution files."
new "## 이 섹션은 렌파이가 프로젝트를 배포 파일로 만드는 방법을 제어합니다."
# options.rpy:160
# options.rpy:166
old "## The following functions take file patterns. File patterns are case- insensitive, and matched against the path relative to the base directory, with and without a leading /. If multiple patterns match, the first is used."
new "## 다음 함수는 파일 패턴을 사용합니다. 파일 패턴은 대/소문자를 구분하지 않으며, /의 유무와 관계없이 기본 디렉터리의 상대 경로와 일치합니다. 여러 패턴이 일치하면 첫 번째 패턴이 사용됩니다."
# options.rpy:165
# options.rpy:171
old "## In a pattern:"
new "## 패턴 있음:"
# options.rpy:167
# options.rpy:173
old "## / is the directory separator."
new "## / 는 디렉토리 구분 기호입니다."
# options.rpy:169
# options.rpy:175
old "## * matches all characters, except the directory separator."
new "## * 는 디렉토리 구분자를 제외한 모든 문자와 일치합니다."
# options.rpy:171
# options.rpy:177
old "## ** matches all characters, including the directory separator."
new "## ** 는 디렉토리 구분자를 포함해 모든 문자와 일치합니다."
# options.rpy:173
# options.rpy:179
old "## For example, \"*.txt\" matches txt files in the base directory, \"game/**.ogg\" matches ogg files in the game directory or any of its subdirectories, and \"**.psd\" matches psd files anywhere in the project."
new "## 예를 들어, \"*.txt\" 는 기본 디렉토리의 txt 파일들과 일치하고, \"game/**.ogg\" 는 게임 디렉토리 또는 그 서브 디렉토리의 ogg 파일들과 일치하며, \"**.psd\" 는 프로젝트에서 모든 곳의 psd 파일들과 일치합니다."
# options.rpy:177
# options.rpy:183
old "## Classify files as None to exclude them from the built distributions."
new "## 파일을 None으로 분류하여 배포판으로부터 제외하십시오."
# options.rpy:185
# options.rpy:191
old "## To archive files, classify them as 'archive'."
new "## 파일을 아카이브하려면 'archive'로 분류하십시오."
# options.rpy:190
# options.rpy:196
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## 파일들의 매칭 문서 패턴은 맥앱(Mac App) 빌드에서 중복되므로 app 및 zip 파일에 모두 나타납니다."
# options.rpy:196
# options.rpy:202
old "## Set this to a string containing your Apple Developer ID Application to enable codesigning on the Mac. Be sure to change it to your own Apple-issued ID."
new "## 맥(Mac)에서 코드 서명을 사용하려면 Apple Developer ID Application이 포함된 문자열로 설정하십시오. 애플(Apple)에서 발행한 ID로 변경하십시오."
# options.rpy:209
old "## A Google Play license key is required to download expansion files and perform in-app purchases. It can be found on the \"Services & APIs\" page of the Google Play developer console."
new "## 확장 파일을 다운로드하고 인앱 구매를 수행하려면 Google Play 라이센스 키가 필요합니다. Google Play 개발자 콘솔의 \"서비스 및 API\"페이지에서 확인할 수 있습니다."
# options.rpy:203
# options.rpy:216
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## itch.io 프로젝트와 연관된 사용자 이름과 프로젝트 이름이며 슬래시로 구분됩니다."
old "## The say screen is used to display dialogue to the player. It takes two parameters, who and what, which are the name of the speaking character and the text to be displayed, respectively. (The who parameter can be None if no name is given.)"
new "## Say 스크린은 플레이어에게 대사를 출력할 때 씁니다. 화자 who와 대사 what, 두 개의 매개변수를 받습니다. (화자 이름이 없으면 who는 None일 수 있음)"
# screens.rpy:98
# screens.rpy:92
old "## This screen must create a text displayable with id \"what\", as Ren'Py uses this to manage text display. It can also create displayables with id \"who\" and id \"window\" to apply style properties."
new "## 이 스크린은 id \"what\"을 가진 텍스트 디스플레이어블을 생성해야 합니다. (이 디스플레이어블은 렌파이의 대사 출력에 필요합니다.) id \"who\" 와 id \"window\" 디스플레이블이 존재할 경우 관련 스타일 속성이 적용됩니다."
# screens.rpy:102
# screens.rpy:96
old "## https://www.renpy.org/doc/html/screen_special.html#say"
new "## https://www.renpy.org/doc/html/screen_special.html#say"
# screens.rpy:169
# screens.rpy:114
old "## If there's a side image, display it above the text. Do not display on the phone variant - there's no room."
new "## 사이드 이미지가 있는 경우 글자 위에 표시합니다. 휴대폰 환경에서는 보이지 않습니다."
# screens.rpy:120
old "## Make the namebox available for styling through the Character object."
new "## Character 객체를 통해 스타일을 지정할 수 있도록 namebox를 사용할 수 있게 만듭니다."
# screens.rpy:164
old "## Input screen"
new "## Input 스크린"
# screens.rpy:171
# screens.rpy:166
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
new "## 플레이어 입력을 받는 renpy.input을 출력할 때 쓰이는 스크린입니다. prompt 매개변수를 통해 입력 지문을 표시할 수 있습니다."
# screens.rpy:174
# screens.rpy:169
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
new "## 이 스크린은 id \"input\"을 가진 input 디스플레이어블을 생성해야 합니다."
# screens.rpy:177
old "## http://www.renpy.org/doc/html/screen_special.html#input"
new "## http://www.renpy.org/doc/html/screen_special.html#input"
# screens.rpy:172
old "## https://www.renpy.org/doc/html/screen_special.html#input"
new "## https://www.renpy.org/doc/html/screen_special.html#input"
# screens.rpy:205
# screens.rpy:199
old "## Choice screen"
new "## Choice 스크린"
# screens.rpy:207
# screens.rpy:201
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
new "## menu 명령어로 생성된 게임내 선택지를 출력하는 스크린입니다. 한 개의 매개변수 items를 받고, 이는 선택지 내용(caption)과 선택지 결과(action)이 있는 오브젝트가 들어있는 리스트입니다."
# screens.rpy:211
old "## http://www.renpy.org/doc/html/screen_special.html#choice"
new "## http://www.renpy.org/doc/html/screen_special.html#choice"
# screens.rpy:205
old "## https://www.renpy.org/doc/html/screen_special.html#choice"
new "## https://www.renpy.org/doc/html/screen_special.html#choice"
# screens.rpy:221
# screens.rpy:215
old "## When this is true, menu captions will be spoken by the narrator. When false, menu captions will be displayed as empty buttons."
new "## True일 경우 narrator 캐릭터를 통해 지문을 표시합니다. False일 경우 지문이 비활성화 선택지로 표시됩니다."
# screens.rpy:244
# screens.rpy:238
old "## Quick Menu screen"
new "## Quick Menu 스크린"
# screens.rpy:246
# screens.rpy:240
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
new "## 퀵메뉴는 게임 외 메뉴 접근성을 높여주기 위해 게임 내에 표시됩니다."
# screens.rpy:261
# screens.rpy:256
old "Back"
new "뒤로"
new "되감기"
# screens.rpy:262
# screens.rpy:257
old "History"
new "History"
new "대사록"
# screens.rpy:263
# screens.rpy:258
old "Skip"
new "스킵"
new "넘기기"
# screens.rpy:264
# screens.rpy:259
old "Auto"
new "자동진행"
# screens.rpy:265
# screens.rpy:260
old "Save"
new "저장하기"
# screens.rpy:266
# screens.rpy:261
old "Q.Save"
new "퀵세이브"
new "Q.저장하기"
# screens.rpy:267
# screens.rpy:262
old "Q.Load"
new "퀵로드"
new "Q.불러오기"
# screens.rpy:268
# screens.rpy:263
old "Prefs"
new "설정"
# screens.rpy:271
# screens.rpy:266
old "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
new "## 플레이어가 UI(스크린)을 일부러 숨기지 않는 한 퀵메뉴가 게임 내에 오버레이로 출력되게 합니다."
# screens.rpy:291
# screens.rpy:284
old "## Main and Game Menu Screens"
new "## Main과 Game Menu 스크린"
# screens.rpy:287
old "## Navigation screen"
new "## Navigation 스크린"
# screens.rpy:293
# screens.rpy:289
old "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
new "## 이 스크린은 메인메뉴와 게임외 메뉴에 포함되어 다른 메뉴로 이동하거나 게임을 시작/종료할 수 있게 합니다."
# screens.rpy:308
# screens.rpy:304
old "Start"
new "시작하기"
# screens.rpy:316
# screens.rpy:312
old "Load"
new "로드"
new "불러오기"
# screens.rpy:314
old "Preferences"
new "환경설정"
# screens.rpy:318
old "Preferences"
new "환경 설정"
# screens.rpy:322
old "End Replay"
new "리플레이 끝내기"
# screens.rpy:326
# screens.rpy:322
old "Main Menu"
new "메인 메뉴"
# screens.rpy:328
# screens.rpy:324
old "About"
new "렌파이란"
new "버전정보"
# screens.rpy:332
# screens.rpy:328
old "## Help isn't necessary or relevant to mobile devices."
new "## 도움말 메뉴는 모바일 디바이스와 맞지 않아 불필요합니다."
# screens.rpy:333
# screens.rpy:329
old "Help"
new "도움말"
new "조작방법"
# screens.rpy:335
# screens.rpy:331
old "## The quit button is banned on iOS and unnecessary on Android."
new "## 종료 버튼은 iOS 규정에 어긋나고 안드로이드에는 불필요합니다."
# screens.rpy:336
# screens.rpy:332
old "Quit"
new "끝내기"
new "종료하기"
# screens.rpy:350
# screens.rpy:346
old "## Main Menu screen"
new "## Main Menu 스크린"
# screens.rpy:352
# screens.rpy:348
old "## Used to display the main menu when Ren'Py starts."
new "## 렌파이가 시작할 때 메인메뉴를 출력합니다."
# screens.rpy:354
old "## http://www.renpy.org/doc/html/screen_special.html#main-menu"
new "## http://www.renpy.org/doc/html/screen_special.html#main-menu"
old "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
new "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
# screens.rpy:369
# screens.rpy:365
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
new "## use 명령어로 스크린 내에 다른 스크린을 불러옵니다. 메인 메뉴 스크린의 내용물은 navigation 스크린에 있습니다."
# screens.rpy:413
# screens.rpy:408
old "## Game Menu screen"
new "## Game Menu 스크린"
# screens.rpy:415
# screens.rpy:410
old "## This lays out the basic common structure of a game menu screen. It's called with the screen title, and displays the background, title, and navigation."
new "## 게임 메뉴의 기본 틀입니다. 매개변수 title로 스크린 제목을 정하고, 배경, 제목, 그리고 navigation 스크린을 출력합니다."
# screens.rpy:418
# screens.rpy:413
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". When this screen is intended to be used with one or more children, which are transcluded (placed) inside it."
new "## scroll 매개변수는, None, \"viewport\" 혹은 \"vpgrid\" 중 하나여야 합니다. transclude 명령어를 통해 다른 스크린을 이 스크린 내부에 불러옵니다."
# screens.rpy:476
# screens.rpy:473
old "Return"
new "돌아가기"
# screens.rpy:539
# screens.rpy:536
old "## About screen"
new "## About 스크린"
# screens.rpy:541
# screens.rpy:538
old "## This screen gives credit and copyright information about the game and Ren'Py."
new "## 이 스크린은 게임과 렌파이 엔진 크레딧과 저작권 정보를 표시합니다."
# screens.rpy:544
# screens.rpy:541
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
new "## 특별할 것이 없으므로 스크린을 새로 커스터마이징하여 만드는 예제이기도 합니다."
# screens.rpy:551
# screens.rpy:548
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
new "## 이 use 명령어로 game_menu 스크린을 이 스크린 내에 불러옵니다. use 명령어 하위블럭(vbox 내용)은 game_menu 스크린 내 transclude 명령어가 있는 곳에 다시 불려집니다."
# screens.rpy:561
# screens.rpy:558
old "Version [config.version!t]\n"
new "버젼 [config.version!t]\n"
new "버전 [config.version!t]\n"
# screens.rpy:563
# screens.rpy:560
old "## gui.about is usually set in options.rpy."
new "## gui.about 의 내용은 보통 options.rpy에 있습니다."
# screens.rpy:567
# screens.rpy:564
old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
new "{a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only] 으로 만들어진 게임.\n\n[renpy.license!t]"
# screens.rpy:570
# screens.rpy:577
old "## This is redefined in options.rpy to add text to the about screen."
new "## options.rpy에서 규정된 내용이 about 스크린에 추가됩니다."
# screens.rpy:582
# screens.rpy:579
old "## Load and Save screens"
new "## Load and Save 스크린"
new "## Load 그리고 Save 스크린"
# screens.rpy:584
# screens.rpy:581
old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots."
new "## 이 스크린은 세이브/로드에 쓰입니다. 거의 동일하기 때문에, file_slots 스크린을 불러와서 씁니다."
# screens.rpy:588
# screens.rpy:585
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
new "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
# screens.rpy:607
# screens.rpy:604
old "Page {}"
new "{} 페이지"
# screens.rpy:607
# screens.rpy:604
old "Automatic saves"
new "자동 세이브"
# screens.rpy:607
# screens.rpy:604
old "Quick saves"
new "퀵세이브"
# screens.rpy:613
# screens.rpy:610
old "## This ensures the input will get the enter event before any of the buttons do."
new "## input (페이지 제목을 플레이어가 수정할 수 있음)이 세이브/로드 버튼보다 먼저 엔터에 반응하도록 합니다."
new "## input이 세이브/로드 버튼보다 먼저 엔터에 반응하도록 합니다."
# screens.rpy:629
# screens.rpy:614
old "## The page name, which can be edited by clicking on a button."
new "## 페이지 제목을 플레이어가 수정할 수 있음."
# screens.rpy:626
old "## The grid of file slots."
new "## 파일 슬롯 그리드."
# screens.rpy:649
# screens.rpy:646
old "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %B %d %Y, %H:%M"
# screens.rpy:649
# screens.rpy:646
old "empty slot"
new "빈 슬롯"
# screens.rpy:657
# screens.rpy:654
old "## Buttons to access other pages."
new "## 페이지 이동 버튼."
# screens.rpy:666
# screens.rpy:663
old "<"
new "<"
# screens.rpy:668
# screens.rpy:666
old "{#auto_page}A"
new "{#auto_page}자동"
# screens.rpy:670
# screens.rpy:669
old "{#quick_page}Q"
new "{#quick_page}퀵"
# screens.rpy:676
# screens.rpy:671
old "## range(1, 10) gives the numbers from 1 to 9."
new "## 범위(1, 10)는 1부터 9까지 숫자를 제공합니다."
# screens.rpy:675
old ">"
new ">"
# screens.rpy:711
# screens.rpy:710
old "## Preferences screen"
new "## Preferences 스크린"
# screens.rpy:713
# screens.rpy:712
old "## The preferences screen allows the player to configure the game to better suit themselves."
new "## Preferences 스크린에서는 각종 환경설정을 플레이어가 지정할 수 있습니다."
# screens.rpy:716
# screens.rpy:715
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
new "## https://www.renpy.org/doc/html/screen_special.html#preferences"
# screens.rpy:738
# screens.rpy:732
old "Display"
new "화면 모드"
# screens.rpy:739
# screens.rpy:733
old "Window"
new "창 모드"
new "창 화면"
# screens.rpy:740
# screens.rpy:734
old "Fullscreen"
new "전체 화면 모드"
new "전체 화면"
# screens.rpy:744
# screens.rpy:738
old "Rollback Side"
new "롤백 클릭 옵션"
new "측면 되감기"
# screens.rpy:745
# screens.rpy:739
old "Disable"
new "비활성화"
# screens.rpy:746
# screens.rpy:740
old "Left"
new "화면 왼쪽 클릭"
# screens.rpy:747
# screens.rpy:741
old "Right"
new "화면 오른쪽 클릭"
# screens.rpy:752
# screens.rpy:746
old "Unseen Text"
new "읽지 않은 텍스트까지 모두 스킵"
new "읽지 않은 지문"
# screens.rpy:753
# screens.rpy:747
old "After Choices"
new "선택지 이후에도 스킵"
new "선택지 이후"
# screens.rpy:754
# screens.rpy:748
old "Transitions"
new "화면 전환 효과를 모두 스킵"
new "화면 전환 효과"
# screens.rpy:756
# screens.rpy:750
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
new "## \"radio_pref\" 나 \"check_pref\" 를 추가하여 그 외에도 환경설정 항목을 추가할 수 있습니다."
# screens.rpy:767
# screens.rpy:761
old "Text Speed"
new "텍스트 속도"
# screens.rpy:771
# screens.rpy:765
old "Auto-Forward Time"
new "자동 진행 시간"
# screens.rpy:778
# screens.rpy:772
old "Music Volume"
new "배경음악 크기"
new "배경음 음량"
# screens.rpy:779
old "Sound Volume"
new "효과음 음량"
# screens.rpy:785
old "Sound Volume"
new "효과음 크기"
# screens.rpy:791
old "Test"
new "테스트"
# screens.rpy:795
# screens.rpy:789
old "Voice Volume"
new "음성 크기"
new "음성 음량"
# screens.rpy:806
# screens.rpy:800
old "Mute All"
new "모두 음소거"
# screens.rpy:882
# screens.rpy:876
old "## History screen"
new "## History 스크린"
# screens.rpy:884
# screens.rpy:878
old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list."
new "## 지난 대사록을 출력합니다. _history_list 에 저장된 대사 기록을 확인합니다."
# screens.rpy:888
# screens.rpy:882
old "## https://www.renpy.org/doc/html/history.html"
new "## https://www.renpy.org/doc/html/history.html"
# screens.rpy:894
# screens.rpy:888
old "## Avoid predicting this screen, as it can be very large."
new "## 이 스크린은 내용이 아주 많을 수 있으므로 prediction을 끕니다."
# screens.rpy:905
# screens.rpy:899
old "## This lays things out properly if history_height is None."
new "## history_height 이 None일 경우 레이아웃이 틀어지지 않게 합니다."
# screens.rpy:914
# screens.rpy:909
old "## Take the color of the who text from the Character, if set."
new "## 화자 Character에 화자 색깔이 지정되어 있으면 불러옵니다."
# screens.rpy:921
# screens.rpy:918
old "The dialogue history is empty."
new "대사가 없습니다."
# screens.rpy:965
# screens.rpy:921
old "## This determines what tags are allowed to be displayed on the history screen."
new "## 이것은 대사록 화면에 표시할 수 있는 태그를 결정합니다."
# screens.rpy:968
old "## Help screen"
new "## Help 스크린"
# screens.rpy:967
# screens.rpy:970
old "## A screen that gives information about key and mouse bindings. It uses other screens (keyboard_help, mouse_help, and gamepad_help) to display the actual help."
new "## 입력장치의 기능을 설명합니다. 각 입력장치별 설정은 keyboard_help, mouse_help, gamepad_help 스크린을 각각 불러와서 출력합니다."
# screens.rpy:986
# screens.rpy:989
old "Keyboard"
new "키보드"
# screens.rpy:987
# screens.rpy:990
old "Mouse"
new "마우스"
# screens.rpy:990
# screens.rpy:993
old "Gamepad"
new "게임패드"
# screens.rpy:1003
# screens.rpy:1006
old "Enter"
new "Enter"
new "엔터(Enter)"
# screens.rpy:1004
# screens.rpy:1007
old "Advances dialogue and activates the interface."
new "대사 진행 및 UI (선택지 포함) 선택."
# screens.rpy:1007
# screens.rpy:1010
old "Space"
new "Space"
new "스페이스(Space)"
# screens.rpy:1008
# screens.rpy:1011
old "Advances dialogue without selecting choices."
new "대사를 진행하되 선택지는 선택하지 않음."
# screens.rpy:1011
# screens.rpy:1014
old "Arrow Keys"
new "화살표 키"
# screens.rpy:1012
# screens.rpy:1015
old "Navigate the interface."
new "UI 이동."
# screens.rpy:1015
# screens.rpy:1018
old "Escape"
new "Esc"
new "이스케이프(Esc)"
# screens.rpy:1016
# screens.rpy:1019
old "Accesses the game menu."
new "게임 메뉴 불러옴."
# screens.rpy:1019
# screens.rpy:1022
old "Ctrl"
new "Ctrl"
new "컨트롤(Ctrl)"
# screens.rpy:1020
# screens.rpy:1023
old "Skips dialogue while held down."
new "누르고 있는 동안 대사를 스킵."
# screens.rpy:1023
# screens.rpy:1026
old "Tab"
new "Tab"
new "탭(Tab)"
# screens.rpy:1024
# screens.rpy:1027
old "Toggles dialogue skipping."
new "대사 스킵 토글."
# screens.rpy:1027
# screens.rpy:1030
old "Page Up"
new "Page Up"
new "페이지 업(Page Up)"
# screens.rpy:1028
# screens.rpy:1031
old "Rolls back to earlier dialogue."
new "이전 대사로 롤백."
# screens.rpy:1031
# screens.rpy:1034
old "Page Down"
new "Page Down"
new "페이지 다운(Page Down)"
# screens.rpy:1032
# screens.rpy:1035
old "Rolls forward to later dialogue."
new "이후 대사로 롤포워드."
# screens.rpy:1036
# screens.rpy:1039
old "Hides the user interface."
new "UI를 숨김."
# screens.rpy:1040
# screens.rpy:1043
old "Takes a screenshot."
new "스크린샷 저장."
# screens.rpy:1044
# screens.rpy:1047
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
new "{a=https://www.renpy.org/l/voicing}대사 읽어주기 기능{/a} 토글."
# screens.rpy:1050
# screens.rpy:1056
old "Left Click"
new "클릭"
# screens.rpy:1054
# screens.rpy:1057
old "Middle Click"
new "가운데 버튼이나 휠버튼 클릭"
# screens.rpy:1058
# screens.rpy:1061
old "Right Click"
new "우클릭"
# screens.rpy:1062
# screens.rpy:1065
old "Mouse Wheel Up\nClick Rollback Side"
new "휠 위로\n롤백 클릭"
# screens.rpy:1066
# screens.rpy:1069
old "Mouse Wheel Down"
new "휠 아래로"
# screens.rpy:1073
# screens.rpy:1076
old "Right Trigger\nA/Bottom Button"
new "오른쪽 트리거(RT)\nA버튼/아래 버튼"
# screens.rpy:1074
old "Advance dialogue and activates the interface."
new "대사 진행 및 UI (선택지 포함) 선택."
# screens.rpy:1078
old "Roll back to earlier dialogue."
new "이전 대사로 롤백."
# screens.rpy:1081
# screens.rpy:1084
old "Right Shoulder"
new "오른쪽 범퍼(RB)"
# screens.rpy:1082
old "Roll forward to later dialogue."
new "이후 대사로 롤포워드."
# screens.rpy:1085
old "D-Pad, Sticks"
new "D-Pad, 아날로그 스틱"
# screens.rpy:1089
old "Start, Guide"
new "스타스 버튼/가이드 버튼"
# screens.rpy:1090
old "Access the game menu."
new "게임 메뉴 불러옴."
# screens.rpy:1093
old "Start, Guide"
new "스타트 버튼/가이드 버튼"
# screens.rpy:1097
old "Y/Top Button"
new "Y버튼/위 버튼"
# screens.rpy:1096
# screens.rpy:1100
old "Calibrate"
new "조정"
# screens.rpy:1124
# screens.rpy:1128
old "## Additional screens"
new "## 그 외 스크린"
# screens.rpy:1128
# screens.rpy:1132
old "## Confirm screen"
new "## Confirm 스크린"
# screens.rpy:1130
# screens.rpy:1134
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## 게임 입력 관련 예/아니오 질문을 플레이어에게 할 때 이 스크린을 표시합니다."
# screens.rpy:1133
old "## http://www.renpy.org/doc/html/screen_special.html#confirm"
new "## http://www.renpy.org/doc/html/screen_special.html#confirm"
# screens.rpy:1137
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
new "## https://www.renpy.org/doc/html/screen_special.html#confirm"
# screens.rpy:1141
old "## Ensure other screens do not get input while this screen is displayed."
new "## 이 스크린이 출력 중일 때 다른 스크린과 상호작용할 수 없게 합니다."
# screens.rpy:1161
# screens.rpy:1165
old "Yes"
new "네"
# screens.rpy:1162
# screens.rpy:1166
old "No"
new "아니오"
# screens.rpy:1164
# screens.rpy:1168
old "## Right-click and escape answer \"no\"."
new "## 우클릭과 esc는 '아니오'를 입력하는 것과 같습니다."
# screens.rpy:1191
# screens.rpy:1195
old "## Skip indicator screen"
new "## Skip indicator 스크린"
# screens.rpy:1193
# screens.rpy:1197
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## Skip_indicator 스크린은 스킵 중일 때 \"스킵 중\"을 표시하기 위해 출력됩니다."
# screens.rpy:1196
# screens.rpy:1200
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
new "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
# screens.rpy:1208
# screens.rpy:1212
old "Skipping"
new "스킵 중"
new "넘기는 중"
# screens.rpy:1215
# screens.rpy:1219
old "## This transform is used to blink the arrows one after another."
new "## 이 transform으로 화살표를 순서대로 페이드인/페이드아웃합니다."
# screens.rpy:1247
# screens.rpy:1246
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
new "## BLACK RIGHT-POINTING SMALL TRIANGLE 글리프가 있는 글꼴을 사용해야 합니다."
# screens.rpy:1251
old "## Notify screen"
new "## Notify 스크린"
# screens.rpy:1249
# screens.rpy:1253
old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)"
new "## Notify 스크린으로 플레이어에게 메시지를 출력합니다. (예를 들어 '퀵세이브 완료'나 '스크린샷 저장 완료')"
# screens.rpy:1252
# screens.rpy:1256
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
new "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
# screens.rpy:1286
# screens.rpy:1290
old "## NVL screen"
new "## NVL 스크린"
# screens.rpy:1288
# screens.rpy:1292
old "## This screen is used for NVL-mode dialogue and menus."
new "## NVL모드 대사와 선택지를 출력합니다."
# screens.rpy:1290
old "## http://www.renpy.org/doc/html/screen_special.html#nvl"
new "## http://www.renpy.org/doc/html/screen_special.html#nvl"
# screens.rpy:1294
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
new "## https://www.renpy.org/doc/html/screen_special.html#nvl"
# screens.rpy:1301
# screens.rpy:1305
old "## Displays dialogue in either a vpgrid or the vbox."
new "## vpgrid나 vbox 내에 대사를 출력합니다."
# screens.rpy:1314
# screens.rpy:1318
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True, as it is above."
new "## 선택지가 있을 경우, 선택지 출력. config.narrator_menu가 True일 경우 선택지가 비정상적으로 출력될 수 있습니다. (디폴트는 True입니다.)"
# screens.rpy:1344
# screens.rpy:1348
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
new "## 동시에 출력될 수 있는 NVL 대사의 최대치를 조정합니다."
# screens.rpy:1406
# screens.rpy:1410
old "## Mobile Variants"
new "## 모바일 버젼"
new "## 모바일 버전"
# screens.rpy:1413
# screens.rpy:1417
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
new "## 마우스가 없고 화면이 작을 가능성이 높으므로, 퀵메뉴 버튼의 크기를 키우고 가짓수를 줄입니다."
new "Direktori projek tidak boleh ditetapkan. Putus asa."
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
old "You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."
new "Anda akan mencipta projek bahasa [new_project_language]. Tukar bahasa pelancar dalam menu keutamaan untuk mencipta projek dalam bahasa yang lain."
new "oadlay <otslay>: oadslay hetay amegay omfray otslay"
# 00console.rpy:546
# renpy/common/00console.rpy:797
old "save <slot>: saves the game in slot"
new "avesay <otslay>: avessay hetay amegay inay otslay"
# 00console.rpy:557
# renpy/common/00console.rpy:808
old "reload: reloads the game, refreshing the scripts"
new "eloadray: eloadsray hetay amegay, efreshingray hetay criptssay"
# 00console.rpy:565
old "watch <expression>: watch a python expression"
new "atchway <expressionay>: atchway aay ythonpay expressionay"
# renpy/common/00console.rpy:816
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
old "This computer is displaying graphics slowly."
new "Histay omputercay isay isplayingday aphicsgray owlyslay."
# 00gltest.rpy:224
# renpy/common/00gltest.rpy:251
old "This computer has a problem displaying graphics: [problem]."
new "Histay omputercay ashay aay roblempay isplayingday aphicsgray: [problem]."
# 00gltest.rpy:229
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
old "Opens a console to allow debugging the problem."
new "Pensoay aay onsolecay otay alloway ebuggingday hetay roblempay."
# _errorhandling.rpym:614
# renpy/common/_errorhandling.rpym:650
old "Quits the game."
new "Uitsqay hetay amegay."
# _errorhandling.rpym:638
# renpy/common/_errorhandling.rpym:671
old "Parsing the script failed."
new "Arsingpay hetay criptsay ailedfay."
# _errorhandling.rpym:664
old "Opens the errors.txt file in a text editor."
new "Pensoay hetay errorsay.xttay ilefay inay aay exttay editoray."
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "Opiescay hetay errorsay.xttay ilefay otay hetay ipboardclay."
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.