If you want the pos to be rounded, blit's old job, you can call integer_blit.
Converting to pure-floats is useless, since nothing checks, so subpixel_blit is made an alias of absolute_blit which uses the good type.
The base behavior is to take elements of pos as style and transform properties do : as positions.
* Add an example of the last advice
* Add an example for auto groups
following feedback
* Integrate info about "poses"
* Fix markup mistake
* Better document Condition and document ConditionGroup
It's a more accurate name, as the variable isn't limited to music,
but works with all audio.
It's set to 0.016, the duration of one frame, which seems about right
and also minimizes popping sounds when an audio file ends.
There were two causes for these. The first was that if a sound
was queued tight, the fadeout would finish, and both playing and
queued sounds would be removed - meaning nothing would play
until the next time periodic ran. Fadeout now dequeues the
queued sound if the fadeout would finish.
The second was a mistake that looked at the wrong portion of the
stream buffer, with the resulting errors often sounding like
clicks.
This implements all four volumes that can be applied to a stream -
mixer, relative_volume, secondary_volume, and fade.
The interpolated volumes (secondary and fade) are now interpolated
using power, rather than magnitude, which leads to perceptually
linear interpolation.
There is a bit of a performance enhancement here - instead of
using decibels as our power units, we use a base-2 power unit
that can be calculated faster.
This is a change to audio mixing that will cause all mixing
calculations to be done on a per-sample basis, rather than
trying to perform mixing on blocks of samples at once.
This will fix issues caused by very short fadeouts, and
enable the move to power-based fading.
These statements used to be recommended, by they're error prone
and now deprecated, and the replacement (say-with-id) has been
available for a long time.
Now, there are deferred warnings for translate None and for
duplicate ids, as well as some infrastructure for enabling
developer mode in python early blocks.
Fixes#4407. Fixes#4406. Relevant to #4243.
* doc: explain the different kinds of variables in screens
* doc: tweaks and better explanations in cds
* doc: Add a warning about overriding the default statement
* Clarify that passing None to Return does not work
"must not" could be understood as "doesn't need to", now hopefully it's more clear.
This scrys for extend text, and appends it to the text being
shown before layout happens. This then lets the text layout
code take that text into account when determining line breaking
and word placement.
Fixes#3963.
Fixes#4392.
This was caused by Text's slow_done callback being triggered when
text was being rendered in the old-side of a transitions. Because
the slow_done callback was running in th new context, the context
was aborting.
This moves running of slow_done into the event handler. Event handling
isn't done on the old-side of transitions, and so the problem does not
trigger.
That prevents it from interfering with other things being named
raw_child, while still not requiring hasattr and getting rid of
type warnings.
Fixes#4391.
The thinking is that renpy.show's with argument should always
be the image that is show - it doesn't make sense for a named
image to override it.
Per #4353.
* Draw video frames on canvas directly for cutscenes
This replaces the features of "00webvideo.rpy" and adds a way to detect
if autoplay is blocked for Movie() as well (with workarounds).
* Let video loop be handled by the browser
* Check for audio or video playback support
A warning message is shown when audio or video playback is not supported.
Video playback requires OpenGL 2 which should be guaranteed by WebGL v1,
but Ren'Py falls back to OpenGL 1 in some exotic configurations (like a
remote X11 server).
* Remove test condition
* Use wasm to decode audio files when needed without disabling video support
Video channels are marked asap in the webaudio module so it is possible to
know which audio function to call for that channel when audio decoding is not
possible by the browser (i.e., for Safari).
* Add details about video support on Web platform
* Remove useless check
* docgen: Modernize signature-reading
Our object's __init__ has a bogus (*args, **kwargs) signature which is actually (), subclasses not overriding it should get a () documented sig
The inspect.getargspec and inspect.formatargspec functions are deprecated in favor of inspect.signature
* Better fix for classes not redefining __init__
Probably faster at execution (although who cares) and does not rely on undocumented identity check
Include an example of a proper usage of time_warp in ImageDissolve
Even though time_warp is mentioned three times in the transition classes document, it's never shown how to actually use it. Since the idea of using the _warper module is not intuitive, and it's mentioned only once at the beginning of the section, I thought it would be best to at least include it in one of the examples.
* document Function's arguments the usual way
* document that Style's fields are write-only
* rephrase beginning of styles
* Warn about not using default
* typo: misdefined var
There are various actions and values that access displayables
in the current screen. Some of these might be run (for example,
BarValue.get_adjustment()) in a hiding or old(-state-of-transition)
screen.
Almost certainly, those values and actions want the displayables
that are present in the original screen, not the copy, and so
the value is redirected.
Fixes#3998.
This mostly affects the case where Ren'Py is skipping, and hence
the images aren't likely to be loaded onto the GPU, and the idle
frame handler is unlikely to be triggered.
When this happens, prediction doesn't - but images will still be
predicted for immediate use. However, the surfaces were not being
loaded onto the GPU until use.
By immediately loading onto the GPU, the surfaces can be immediately
evicted from CPU memory, reducing the maximum amount of CPU memory
in use.
When a for loop has a break or continue in it, it may not
complete all of its executions. The result of that is that
variables that are updated in the loop are no longer constant
in the screen.
This has break and continue mark the loop as non-constant, and
then the loop re-analyzed to mark the variables in it as
non-constant.
text: Allow slow mode use while TTS is active
This relaxes the restriction on using slow text in screens while
self-voicing is enabled. As typical say dialogue is handled by Character
it is unaffected by this change.
The previous approach of predicting all branches was incorrect when
a constant branch was taken, as it could lead a locally const variable
to be given a different value, which prevented further optimizations
from working.
Fixes#4163.
* im.Data, and im.ZipFileImage aren't subject to oversampling, as they aren't "im transforms" - taking an im and returning another
* Composite takes several im parameters, so computing the oversampling of the whole is not trivial. I chose only to support all the images having the same oversampling factor - which is better than nothing, for obsolete functions
* Alphamask already had the constrant of the two images having the same size, they now also must have the same oversampling - seems fair enough to me. If you try it, it will most likely glitch, but that's only if and because Fix subsurface offset when oversampling #4083 is not merged
* All others have been converted.
This is a variable that maps a short font name to a longer font name, allowing font tags (and other places fonts are used) to be shorter when required.
This alters how the Move transition deals with layers that have been
wrapped in a transform by the "show layer" statement.
Previously raw layers were hung on the layers_root widget, so that the
Move transition could unwrap them when needed. Unfortunately this meant
that it was only possible to do this unwrapping if it was the
layers_root widget being transitioned, rather than individual layers.
The change is to instead hang the raw layer on its transformation
directly, allowing it to be accessed both in the case of transitioning
the layers_root widget and also transitioning a layer in isolation. It
also makes the concept of raw_layers on the root widget redundant, and
so they have been cleaned up.
* Patch check_image_attributes
The last change to now-line 147 require `negative` and the elements of `l` to be the same type,
which they are not because the elements of `l` are not of constant type:
when added by line 134 they're lists, but when added by line 139 they're tuples.
This converts them always to lists - the memory-heavier but safer option.
* Convert all to tuples
* Simplify the code
A deferred error is a parse error that might or might not manifest,
based on configuration variables that need to be set early, but can
be in any file.
These errors are stored in .rpyc files, and might become real parse
errors, or might be discarded.
This is intended to address #4284.
It looks like there were two things happening at once. One might have
been caused by aggressive power saving after onPause returns, and
seems to have been fixed by renpy-build@e73258924e907fe613ea6f243ab4a6bcae561632 .
The second was a crash in renpy.audio.audio.pause_all, that is probably
caused by the Audio Focus system on Android 12 starving the audio
thread, leading to things locking up.
This change pauses the audio without acquiring any locks, and was
stable after tens of pause-resume cycles on my Pixel 7.
Addresses #4286.
It's now fine to use the system fribidi, so we use that. This
also upgrades the interface to use Python unicode functions that
are no longer deprecated.
* Use of a zero-length array in the middle of the structure is non-portable,
so replace it with a pointer.
* Apparently, M_PI is non-portable, so replace it with the constant.
* Allow the sync id to be typed in lower-case.
* Set the correct init.
* Do not depend on the system-wide confirm screen.
* Use gui._scale rather than gui.scale.
The new max focus was not stored, causing problems. If maxing a focus
happens when a displayable is grabbed, the grab is broken.
Fixes#4092, resolves#4108.
Having do_done happen before do_display seemed like it could
cause problems, so put the dialogue onto the history_list, pop
it, and put it back on again in do_done.
* It's now possible to specify a list of additional save locations
that files can be saved to.
* A new method that gets a path to a save or persisten file.
Video files are rendered by the browser using a HTML video element. The video
output is drawn to a canvas periodically and the canvas content is copied to
a MEMFS file for Renpy to process it. The file format is TGA to reduce the
CPU load as much as possible (HTML canvas only support exporting data as JPG
or PNG natively).
The Layer displayable has its child injected using visit_all. That makes
the default behaviour of calling the callback on children first
unhelpful, as it descends the tree before the child is replaced. This
change flips that order for the Layer displayable, calling the callback
first on self (allowing the child be updated) before descending into the
new child.
Reuse the tree traversal done to support per_interact to find Layer
displayables in the tree and replace their contents before calling
per_interact as normal.
Uses the clipping keyword argument via properties to avoid making it
usable as a positional argument, and to prevent the creation of a new
style. Additionally the AdjustTimes init is skipped as there's no
benefit to initialising either the times or the child before add is
called by interact_core.
This deals with the case where the the insets caused by the
side displayable might cause the center displayab;e to grow in
one dimension. (For example, Text that has an inset on the right
may be bigger vertically than if there was no inset.)
When this happens, the space allocated to the center displayable
will be allowed to expand until everything fits.
Fixes#4253.
SVGs will be automatically rendered at the drawable resolution,
and then oversampled to reduce them to the appropriate virtual
size. The result is something very similar to the way text is
rendered always sharp.
Fixed#1641.
In py3, an object's method inherits the object's method's docstring.
We don't want that one to pass as one written by us and which should be included in our documentation.
This change ensures that tags are only unstuck when being removed from
the layer to which they were stuck. As they could only have been stuck
to a sticky layer in the first place, there is no need to check if the
layer is sticky.
This change results in much better prediction of the source image,
considerably speeding up prediction and loading while reducing I/O.
Previously it would attempt to load the source image for each frame.
Defaulting to off, because I personally like keeping the game running
when doing something else. (And because this would ruin the usefulness
of music rooms.)
Fixes#3777.
This has been the behavior of Ren'Py, outside of lint, for quite some
time, and the usability improvements likely make up for the chance
that some errors will pass unnoticed.
Fixes#3926.
* doc: typos and references to new clauses
* doc: new parameters to show screen and hide screen
* revert accidental revert
* doc: document new clauses for call screen
and bring nopredict in line with the others
* doc: fix wrong example
Co-authored-by : Booplicate
* Group layer definitions in config.py
* sticky: Initial sticky layer implementation
* sticky: Add sticky argument to renpy.add_layer
* sticky: Compat with older versions without sticky
* sticky: Document config.sticky_layers
* sticky: Use list for config var instead of set
Usability trade off at Tom's request.
* Update persistent.py
Add the __contains__ syntax
Add the _keys method
Include __ keys in _clear's behavior, and use the new _keys method to avoid code duplication
* Document the new behaviors and explain the __ fields
* Add link anchor
* Undo _keys, turn `in` into _hasattr, document this
* better document __-starting fields' limitations
* doc: Move _hasattr and word things better
* typo
This is based on the implementation in iOS, as described at
https://ariya.io/2011/10/flick-list-with-its-momentum-scrolling-and-deceleration .
When the user releases their finger from the viewport while it's moving,
inertia will keep the viewport scrolling until either the user begins to
scroll again, or it comes to a natural stop.
I had some feedback that clicking and then clicking on the text-button
was confusing, and it confused me late last night - so move to a single
click model.
This lets a game developer pre-seed the list of verification keys,
and ship 'blessed' save-games or persistent files that the user's
game will load without asking for verification.
By making the tokens ECDSA keys, it's possible to include a signature
of the log or persistent data in each file. By doing this, it becomes
impossible to simply transfer a token from one save file to another,
allowing it to prove that the data was generated by someone who knew
the public key.
The compromise is that when self-voicing is active, afm will only occur
when the dialogue is focused - it will not occur when another button is
focused.
Two changes in this one. The first is to add a quartet of new
modifiers (caps/nocaps, num/nonum) to reflect if capslock or
numlock are turned on.
The second is to create a new type of keysym, beggining with KP,
that expands out to the key with our without the numlock modifier.
Starts work on #4030.
There are some good reasons for allowing undefull grids (like a
gallery with variable number of images), and not a ton of reasons
not to allow these grids. So this changes the default.
This moves the JS command queue processing into the 20hz periodic
event handler. Moving it out of the idle frame handing makes sure
that the command queue runs even if the the idle frame code is
being starved by frequent events or animations.
The js command overhead was measured, and seems to be less than
the browser's cock precision.
* Generate pwa_catalog.json in a way that matches how renpy-pre.js
uses it.
* Directly update manifest.jso, rather than using search and replace
to do it.
A possibly safer way would be to use os.path.splitext, but it would only change anything if the file has no extension - the current implementation could yield an incorrect result, and splitext would return an empty string.
The block code inside the arg's block was causing an issue in the rendering of the HTML (for some reason).
The `::` was turned into a `.. code-block:: none` because as it's not proper ren'py syntax, it was issuing a warning about it when building - now it knows there's no proper syntax to expect there.
Improve the performance of the loop by avoiding calling for the current time on every step of the iteration. A few milliseconds won't make any difference and could be neglectable.
These were being set, but being set incorrectly, which violates
the invariant (enforced by Python 3.11) that the end location
must be after the starting location.
This enforces that the end of each node is after it's start,
and after the end of each of the node's children.
Unlike web2, where we stubbed out the threading module that wasn't
being compiled, on web3 we use the Python threading module and simply
don't create threads. This is because the locking exists, and so
doesn't need to be stubbed - just the thread starts.
The function is actually called inside renpy.compat, so importing sys after importing renpy.compat is already too late.
It could be considered to use `global sys;import sys` in the function, or to import sys just before or after defining the function, but I'd rather keep things the way they were.
-- review for naming of variables;
-- add field for `MP`: `_name`, `_save_on_quit`;
-- functions:
-- -- `save_MP` as `save_on_quit_MP` with check on `_save_on_quit`
-- -- `save_MP` called for every `MP` instances;
-- -- `get_MP` returns `MP` instance` if has already been created before;
-- add some docs.
This allows an image to be interpreted as a smaller image for the
purpose of layout. For example, a 2048x2048 image with 2x oversampling
will be considered as a 1024x1024 image for layout purposes.
But if the window is scaled up, then the additional detail will be
there.
Previously, properties were configured one at a time. This didn't
allow realistic customizations, which often require groups of properties
to be customized together, so bubble has been rewritten to allow this.
When window auto is true, this will hide the narrator window when
bubbles appear.
This also changes the priority of say-condition-false and say-centered
so the former takes priority, which is more likely correct.
The correct triplets for various arches are:
x86_64-linux-gnu
arm-linux-gnueabihf
powerpc64-linux-gnu
powerpc64le-linux-gnu
The uname-based instructions produced the following:
x86_64-linux-gnu (correct)
armv7l-linux-gnu (wrong)
ppc64-linux-gnu (wrong)
ppc64le-linux-gnu (wrong)
gcc produces the correct results for all four. I suspect this will also
fix non-GNU triplets such as musl, but didn't test those.
* Use the on_show method to set character properties for a speech
bubble.
* Work on the _bubble_editor screen, which allows a property to be
selected for editing.
This is a displayable that allows the user (generally the creator)
to pick a rectangular area on the screen. The intended use of this
is to support placing balloon dialogue onto the screen, though
other uses might be possible.
This adds two new functions, renpy.easy.to_list and renpy.easy.to_tuple, that convert objects to lists or tuples as required.
Co-authored-by: Mal Graty <mal.graty@googlemail.com>
This is the intial creation of a new construct for in-game, non-script
programming. For example, a system for displaying dialogue in popup
bubbles could use a JSONDB with the correct key to choose popup
bubble location.
* Fix sticky draggable viewport
Forget the initial drag position if the visible dragging was not started and the player unpressed LMB.
* Make it possible to use either bool or variant
* Remove the gap
Removes the gap that was noticeable if `config.viewport_drag_radius` was set to a large value.
* Additional zero check
Do not let the image disappear if the final image weight is zero.
* Removed wrong changes
* Fix sticky draggable viewport
Forget the initial drag position if the visible dragging was not started and the player unpressed LMB.
* Make it possible to use either bool or variant
* Remove the gap
Removes the gap that was noticeable if `config.viewport_drag_radius` was set to a large value.
* Additional zero check
Do not let the image disappear if the final image weight is zero.
* Removed wrong changes
This will re-run, and hence re-translate, say statements that have
interact=False, most notably the Say statement that precedes a
menu statement.
This could cause problems if there is a non-idempotent statement
between the say statement and the interaction, like:
e "This will show dialogue when the screen is shown." interact False
$ variable += 1
call screen myscreen
That should be rare enough that a warning will suffice.
By default, timers trigger even if uderneath a modal screen
- a screen timer is intended primarily to display data, and not
by default, as a means of control. (For example, the default
notify screen uses a timer to hide itself without game effect.)
Pauses, by default, respect modal screens, as pause is part of
the main game's control flow.
Both timers and pauses take a modal property, which overrides
if a modal screen is respected or not.
Fixes#3935.
Sometimes, your tag doesn't know what size it will be, but `+`/`-` is not enough. Allowing a multiplier is a two line change.
```
"{size=*2}This is double size{/size} and this is {size=*0.5}half size{/size}"
```
Strip parsed arugment default expression.
So it does not appear with \n when the last argument in the multiline parameters does not have a trailing comma.
The biggest change here is that there is a new _draggable field on
Displayable. If True, the displable itself might be draggable, and
so a Viewport won't steal the focus of it.
There are also several changes that make sure the viewport gets and
releases drags as appropriate.
Finally, draggability only enables when the displayable is actually
scrollable in at least on axis.
Fixes#3910.
Now, when a a touch moves by a certain number of pixels when a
button inside a viewport is focused, focus and grab are shifted
onto the viewport, which then can be scrolled.
This also changes several things about how viewports process
events - now, if an event can be handled by the viewport, the
viewport takes precendence.
This disables the grab, and then changes the focus. This is mainly
intended for used by Viewport and VPGrid to override child focus
when being scrolled.
This allows it to be iterated multiple times, even if the value
is an iterator. This in turn, allows range, enumerate, and zip to
be marked as pure, and hence potentially treated as constant in
a screen.
With this change, foo_ren.py is compiled at the same time foo.rpy
would be, and both files produce foo.rpyc, with foo_ren.py taking
precendece over foo.rpy if both exist.
The purpose of this is to make it possible to replace a .rpy file
that contains an init python block with a _ren.py file, and have
the .rpyc file be replaced with the file fron the new source.
We override :args: not to display `value`, so documenting it looks weird.
We could also choose to let the value argument display in the class signature.
At 3,000+ lines, parser.py was getting a bit unwieldy. This change
breaks off the file processing and lexing portions of the parser
into lexer.py, and leaves parser.py more for the parser trie and
statement definitions.
This will let me add more functionality (the ren.py transfome)
to lexer.py.
The goal of this was to make sure that ffmedia.c compiles without
any warnings under ffmpeg 4.2. This required a series of
related changes.
The first was more changes of how the Packet queue works. The packet
queue is now in charge of allocated and deallocating AVPacket objects
as required, and is the only place where AVPacket objects are created.
This allowed us to get rid of several AVPackets that were allocated
as part of MediaState, and a lot of copying of data to and from these
objects.
This enables and is enabled by a change to fully embrace the new
avcodec_send_packet/avcodec_receive_frame API, and most notably
that avcodec_send_packet is defined to either fully read a packet,
or not read it at all.There was a lot of complexity inherited
from prior APIs that would only partially read packets, which
these changes do away with.
The goal of this is to improve Ren'Py performance by not checking
stores that will not be changed outside of the init phase for
changes before statements.
The icon store is left alone, as it may be going away soon.
If true, this variable declares the namespace constant. Constant
namespaces are not saved or loaded, and do not participate in
rollback.
In exchange for this, the namespace does not need to be scanned
for changed variables, saving a lot of time if the namespace has
no variables that will change after init.
This is a big improvement on Python 3, where store dictionaries can
be created in mostly-sorted order, and hence become the worst-case
for quicksort.
Fixes#3812, which is caused by the store.audio namespace becoming
truly huge, and this bad behavior running Ren'Py out of memory.
This is a big improvement on Python 3, where store dictionaries can
be created in mostly-sorted order, and hence become the worst-case
for quicksort.
Fixes#3812, which is caused by the store.audio namespace becoming
truly huge, and this bad behavior running Ren'Py out of memory.
- Avoid sorting dirs because it's pointless
- strip config.gamedir once instead of many times
- only strip it when safe (this one is a little bonus)
- do not turn into a bytes in py3 (I don't even know why it was the case in py2, but I left it just in case) (and even in that case, now it does it only once)
This simplifies many cases where a page has a ref identifier distinct
from its filename, which makes linking harder to understand when writing
the doc.
Also, it solves a small scrolling problem in such cases.
Some links in changelog and changelog6 were left alone, and some .. _
identifiers too, to ensure compatibility.
Using replace is probably simpler than using split then join.
Also, the markup using a leading whitespace is the quote markup in sphinx, which is a bit ugly. A bullet list renders better, I think.
Using replace is probably simpler than using split then join.
Also, the markup using a leading whitespace is the quote markup in sphinx, which is a bit ugly. A bullet list renders better, I think.
- Avoid sorting dirs because it's pointless
- strip config.gamedir once instead of many times
- only strip it when safe (this one is a little bonus)
- do not turn into a bytes in py3 (I don't even know why it was the case in py2, but I left it just in case) (and even in that case, now it does it only once)
This simplifies many cases where a page has a ref identifier distinct
from its filename, which makes linking harder to understand when writing
the doc.
Also, it solves a small scrolling problem in such cases.
Some links in changelog and changelog6 were left alone, and some .. _
identifiers too, to ensure compatibility.
When called, this causes audio to be processed, as it is at the
start of an interaction. This is intended for cases where audio
is played and then stopped with a fadeout, which default to not
playing anything.
Fixes#3805.
Mouseareas are supposed to not hover if the keyboard is being used for focusing, but this was broken by an if/else statement that changed the is_hovered value again without regard to if it had already been set to false because of keyboard focusing. Changing it to elif/else ensures the value of is_hovered is only changed if it hasn't already been set to false because of keyboard focusing.
* Only use default_focus when the last interaction was not a mouse
click, mouse movement, or touch. This prevents focus flickering when
where default_focus occured, the mouse event was immediately processed,
and the focus changed.
* When a displayable with a greater default_focus appears, switch to
it.
* When the displayable with the greatest default_focus disappears,
switch to the new greatest default_focus when nothing else is
focused. This allows going to the default item in a lower priority
menu if a higher priority item disappears.
Fixes#3761.
Mouseareas are supposed to not hover if the keyboard is being used for focusing, but this was broken by an if/else statement that changed the is_hovered value again without regard to if it had already been set to false because of keyboard focusing. Changing it to elif/else ensures the value of is_hovered is only changed if it hasn't already been set to false because of keyboard focusing.
Events (other than modal TIMEEVENTS) should not be delivered to
the pausebehavior when it's behind a screen, and since TIMEEVENTS
can be combined with other events, it needs to be possible to
end the pause on any event.
Events (other than modal TIMEEVENTS) should not be delivered to
the pausebehavior when it's behind a screen, and since TIMEEVENTS
can be combined with other events, it needs to be possible to
end the pause on any event.
This attempts to address #3799, which I'm guessing is caused by
the game being saved when in an error handling context that's
handling a parse error.
What this does is to try to retain the initial save that is created
until the save is loaded successfuly, or alternatively until the
game quits.
By not creating a new save slot for each reload attempt, this
tries to avoid creating a save when Ren'Py is in an unstable
state.
This fixes a problem where using renpy.file would open script.rpy
when no translation was in effect, but tl/language/script.rpy would
take priority when a translation was in use.
Fixes#3780.
These functions had gotten out of sync, with __eq__ being defined
and __hash__ being ignored. On Python 2, that mean objects that
would compare equal but have a different hash, while on Python 3,
an error would be raised indicating that the object was unhashable.
This resolves this ambiguity by adding __hash__ to classes that
are non-subclassables and have __eq__ defined, and then by removing
__eq__ from the base subclasses, leaving the default equality,
with is object identity.
This allows files ending with _ren.py to contain Ren'Py script,
be loaded, and operate as part of a normal game. The transformation
from Python to Ren'Py script has yet to be implemented.
When followed by as :, pass takes an optional block that it
then ignores.
This is mostly intended for _ren.py files, where it will be used
as a way of ignoring lines of Python that only exist to make
Python type-checkers happy.
The buried lede - a _ren.py file will be a Python file (that can be
analyzed with Python tooling) that is convered internally to a
.rpy file, and then compiled as Ren'Py. At least, that's the plan.
This probably doesn't matter as much in practice, but it's the right
calculation for audio.
A more important change is that the default values for mixers are
now specified as a percentage of a mixer bar.
Internally, the volumes are stored as linear volumes, being upgraded
the first time a version of Ren'Py that supports linear volumes is
run.
All other places a volume can come into Ren'Py are updated to consider
the new config.quadratic_volume variable, which will square the volume
to get linear volume.
This had been left in to support potential issues in the change
from SL1 to SL2. That wasn't used, and almost certainly isn't
being used anymore, so the parser can be removed.
SL1 screens can still be loaded if they exist in SL1 files,
as this only affects the parser, not the runtime.
Fixes#3430.
The changes here store the text objects that are created as part
of a multiple say statement, then pass those into SayBehavior,
which will use them to determine how long the autoforward will
pause for.
Fixes#3744.
This fixes a problem where a Function with equal mutable arguments
would compare equal to another similar function, while not
actually performing the same action.
In py3 the print_exc function prints a str, which files opened in binary
mode do not like. Conversely py2 doesn't seem to mind whether the file
is in binary mode or not.
This matches the approach taken in the rest of the file, where various
logs and outputs are also not opened in binary mode any longer.
Instead of creating a .old file that can't be deleted, the files
are moved into updater/deleted. That directory can then have a
delete attempted each time Ren'Py starts, and the files are out
of the way.
Especially the update packages. Fixes a problem where 8.0.0
couldn't be unpacked because the steam dlc didn't include the
package file the steam dlc existed in.
This allows a default focus to be modal, which means it will be modal
for the entire screen without the dismiss itself having to take up
any size.
Fixes an issue where displayables behind the dismiss could still get
mouse focus incorrectly, but weren't clickable.
Doing so causes it to be in the stores that are creates, which
prevents those stores from exporting all their names to
from store.whatever import *
Fixes#3693.
Before this change, it was possible for an entire file to be uniformly
indented and still accepted. That's not something that was intended.
This won't lose any games, as the check is only performed at parse
time, and so the source code exists (and can be dedented easily).
Fixes#3691.
The code being removed was unreachable prior to 7.5/8.0 due to a bug
meaning that the paired parameter was never passed. This meant it could
never be a dict, and that this code was unreachable.
Specifically,
screen test(param):
add Movie(play=param + ".webm")
label start:
call screen test("a b c d")
return
would crash, as the channel used is based on the movie file name,
which wouldn't be registered in the init phase.
* doc: Add a dedicated lint section
* add link anchor
* doc: add Lint advantage for define and default
* doc: add lint reference in displaying-images
* add a reference to the main lint section
* doc: reference to Lint in statement equivalents
* fix phrasing
* fix wording
* Add links in quickstart to other parts of the doc
not too sure about the word "article" though
* linkify Statement Equivalents, and move renpy.pause inside it
* doc: add see-also section to displaying-images
* fix typo
* doc: Add anchors and fix refs
* doc: Add anchors and fix refs
* doc: Add anchors and fix refs
* doc: Add anchors and fix refs
* doc: Add anchors and fix refs
* doc: Add anchors and fix refs
Before the logdir is set, the logfile might be created in the
wrong place. Logging lines before then can be ignored, as they're
likely redirected prints, and once the log is ready logging
begins.
On the new Galaxy Tab A7 Lite, I noticed that if a game didn't respond
to the DIDENTERBACKGROUND event fast enough, it would be unable to
execute anything, and stop responding. This responds immediately,
which then allows the game to save before the TERMINATE request
happens.
This fixes a problem that was showing up on some samsung devices, like
my Galaxy Tab A7 Lite, where for some reason (potentially due to
alignment restrictions gl doesn't specify) uploading a texture
directly causes a crash.
Per #3643.
Parameter order of renpy.with_statement changed 11 years ago which
resulted in the value intended for the "paired" parameter being passed
to "always" instead.
Specifically, an ATL function statement is considered to be blocking when running it with st=0 returns non-None, and non-blocking when running it with st=0 returns None.
Fixes#3636
This restores the behavior of 7.4.10 and earlier, and it makes
sense - a modal screen blocks the saybehavior's functionality in
its entirety.
Fixes#3624.
The find_focus method iterates from back to front, and so when
mark modal is called, the focuses behind it (that have already
been given to the callback) are the ones that can't be given focus.
The previous implementation got that wrong - the displayables in
front were the ones that couldn't be given focus, which lead to
random problems.
Fixes#3617.
This is something of a compromise, to prevent games that cause
interaction restarts in their unfocus handlers from preventing
the game from interacting at all.
Fixes#3617.
This adds a new download, sdkarm, that's meant for running on
the Raspberry Pi and ARM Linux.
It also modifies the linux build to include ARM versions if the
ARM directories are present in lib.
* Look for editors in renpy_base rather than basedir, allowing
the editor system to be used even if the launcher is launched
directly.
* For VSCode-Linux, use renpy.arch to locate a platform-specific
version of the editor.
* Do not present Atom as a valid choice when running on a platform
where we don't support Atom.
* Only offer jEdit to users that have it already installed - it's so
obsolete at this point, that it's only a confusing extra option.
* Remove python creation of screens from the doc
* doc: Undocument various ui functions and renpy.define_screen
* doc: Move and rephrase renpy.predicting's documentation
* Clarify renpy.variant
and remove reference to screen creation and style setup
* doc: Remove unnecessary interstitial addition
* Changelog the removal of python screen creation
* Linkify config.show and config.scene
* Deindent stuff
* Specify that label is a string (and deindent)
* Add explanation for the channels
It was asked for...
* better
* Add a link to the audio actions section
* Change args of Rollback and tweak HideInterface
...and deindent
* Document setdict with lists, and clarify names
...and deindent
* Update displayables.rst
* Replace the part removed from displayables.rst
fixes part 2 of #3500
* Document Text's slow_done arg
per #3500
* Document Texts **properties and clarify its mipmap
finalize #3500
* remove unnecessary backslash
* Add the volume section to the Audio page
* Document the mixer parameter as required
and add explanations
* Mark "all mute" as deprecated
* Remove "main mute"
* Add and edit content in the volume section
* Update preferences audio functions
* Add set_mute
* Update list of mixers
* Update list of mixers
* Fix rst
* doc: Expand build.archive's documentation
* doc: Document build.classify's second argument
how it creates new valid file_lists
* doc: Separate the archive names from the file_list
* doc: Finish separating archive and file_list names
* doc: clarify build.classify
* doc: Document build.archive's second argument
how it creates new valid file_lists too
* doc: expand build.package's example
Co-authored-by: raspberry-soft <87047775+raspberry-soft@users.noreply.github.com>
Co-authored-by: raspberry-soft <87047775+raspberry-soft@users.noreply.github.com>
The name brings it inline with the Ren'Py verb_noun naming style,
and is useful now that file() isn't part of Python 3. The encoding
is useful in Python 3, and by allowing a default encoding to be
set, help port Python 2 games to Python 3.
Newer versions of Python 3 enforce the condition that a global
statement has to come before variables are assigned, while older
Python versions didn't enforce this.
Since games rely on this to work, this pass finds all the global
statements inside the function, replaces them with pass statements,
and then creates a new global statement at the start of the function.
This isn't needed for nonlocal, as no games currently use that
statement.
It seems a decent number of Ren'Py 7 games have print statements,
and so removing those statements makes it possible to run those
under Ren'Py 8, at least if no other problems show up.
Based on Tom's work in a851baff1b.
- Checks for membership in reachable which is a cheaper option than
checking for a not None lookup, at the cost potentially permitting the
o_id of None itself.
- Adds o_id to seen before type checking, so that if we see them again
we can short-circuit the type check.
- Type checks o, rather than reachable[o_id], saving a lookup.
Due to a bad test, objects of revertable types that were not
reachable could be marked as such. This lead to multiple problems,
like unsaveable types being saved, and objects that weren't
supposed to be rolled back (like the console) being rolled
back.
Py3 doesn't let the thread that owns the GIL get it again, and
so it needs to be released before an operation that can read
from a file, which this one seems to be able to.
* Wording changes.
* Use zero-height fixeds to position text above and below the language lists.
This means that the language buttons will not move if a translation changes
from one to two lines (or vice versa).
* Allow the language selection to be repeated with an environment variable.
* Add some hidden comments to help people translate.
This moves the preferences screen to a multi-tab design, with
the left 1/3 being a list of tabs and the right 2/3 being the
tab content.
The motivation for this was that the preferences were getting
overfull, and some translations were breaking the layout. By
dividing the screen up, we get a lot more space to play
with.
This controls the resolution textures are rendered at, drawable
(if true, the default) or virtual (if false). This mostly exists
to control the artifacts that occur when upscaling a flattend image.
Fixes#3409.
Fixes#3349.
The _unique method should only be called if a displayable will only be
entering the tree of displayables to be rendered once. That
wasn't the case in certain circumstances, when _unique was
being called from _duplicate, which is usually called when a
displayable is added.
This might trade performance (additional duplications) for
correctness. That's something we can accept for now, and
eventually deal with in the future by optimizing when
displayables are duplicated.
The reason for this is that the windows zsync can only handle
2GB-1 files, probably due to a signed int issue. Breaking the
input files up avoids this problem.
Fixes#3496.
Previously nested interpolations would lose scope due to it not being
pushed down into the recursive call. Unfortunately the fix is slightly
non-trivial.
The string.Formatter class does not naturally expose the provided scope
to the convert_field method which is where we need it for nested
interpolations. In order to get it there we use the expectation
(documented, see ref) that the value provided to convert_field is the
obj returned by get_field which is supplied with the scope.
Additionally we handle nested interpolation via a call to self.vformat,
rather than round tripping through renpy.substitute since we're actively
not translating or changing the scope.
These displayables qualify, as (with the exception of add and image,
which are handled separately) the displayables aren't going to
have additional references.
By marking the displayables as unique, excess duplication can be
prevented.
Fixes#3256, probably, hopefully for good this time.
It looks like the cause of the problem might have been the timeout
being cancelled between the end of the slow text and the event
being delivered. By calling slow_text from render, there's no
chance of this happening.
The problem was that when rolling forward, Ren'Py would stay in
rollback for the entire new page.
This fixes the problem by creating a checkpoint after each line
of dialogue, and conditioning roll-forward on having the
checkpoint existing.
Fixes#3249.
This ensures that a rollback point will be created at the next
statement, preventing random number generaton from being
reverted when a save is loaded.
Fixes#3479.
The new behavior of a modal window is to block mouse events that
happen within the window, and prevent focus from being given
to displayables behind the modal window.
This runs an action when the player clicks, hits space, or hits
enter when nothing else is focused. It's similar to the say behavior,
but meant to be put in the background of popup windows and menus.
Fixes#3472.
Render.modal is meant to optimize the case where things are globally
modal - nothing below the displayable is considered by the focus
system.
Window's modal property is meant to prevent displayables behind the
window from getting focus, while still allowing things behind the
window to get focus.
* renpy.current_screen() is now documented.
* Some fields returned by renpy.current_screen() or renpy.get_screen()
are now documented.
This is designed to make an implementation of #3235 in an action
possible.
The underlying functools.partial doesn't have an __init__ method, so the
super call bounces up to object which doesn't take arguments. This is
fine in normal use but presented issues in some pickling scenarios.
Since we can be slightly more efficient without it, and it avoids the
edge cases with pickle, nuke it.
* If local.properties or bundle.properties exist, preserve those.
This means that it's no longer required to run Install SDK
after a clean.
* Allow android clean to run if .android.json doesn't exist.
Per #3019.
It's been set this way in screens.rpy since the new gui came out,
meaning very few games in development should use the old value.
It makes sense to change the default and remove some boilerplate
from games.
Fixes#3461.
When reading default a.b.c = value, renpy will check for :
* a.b.c being a store
* a.b.c being already defaulted (case already covered)
Co-authored-by: Mal Graty <mal.graty@googlemail.com>
This lets the empty window shown as part of a choice be
customized. The main use would be to set this to extend to
repeat the last line of dialogue.
Fixes#2606.
This goes back to the original idea of it, which was to provide a
way of normalizing track volumes. This change makes it so that the
relative volume selected sticks with the track.
This means that, now, if you queue a track with a given relative
volume, that only takes effect when the track is played. Other
changes make relative volume work better with rollback, and
loads.
Fixes#2654.
This is similar to the cycle removal that's taking place elsewhere
in Ren'Py, and prevents the state passing that happens in a button
from updating the child when the state changes.
Fixes#3181.
This deals with the case where the timer's events are blocked -
the timer should still be running in that case, and then trigger
once the events are unblocked.
Fixes#3446.
This is designed to handle the case where a transform is blocking
events and then stops. There many have been timeout events ignored
by this, and so this will redeliver them.
Fixes#3161, by not bothering to walk through the screen and
all its details before saving. This should also work for rollback,
as nosave is for internals, that fundamentally should not pass
reachability.
Previously, modal would remove displayables from the focus
list entirely, which prevented unfocus from being called. Now,
it sets a flag that only considers the displayables for unfocus.
Fixes#2743.
In a roundabout way, by allowing the callable to return itself
(or another callable), and then be called again with (x, y, w, h)
as the arguments.
Fixes#3343.
Objects with infinite length that are still iterable have to store their
real data somewhere else, so there is no need to iterate them to
find it.
Per #3436.
Most of these were the now-obsolete practice of using an expression
to prevent unused import warnings. Since unused imports are a lot
more subtle in vs code, there's no need to have an expression
prevent them - especially if the expression causes problems.
The main justification for this is that roll forward only preserves
the return value of the screen, or a jump out of it, and doesn't
preserve any other side effects in the screen. This can lead to the
game being in a different state between playthoughs.
A new roll_forward property allows it to be re-enabled for particular
screens.
Alternatives considered were:
* Trying to determine which actions should allow a screen to
roll forward. This was implemented, but was rejected as a maintenance
problem, and hard to make understandable in the documentation.
* The reverse of rollback was considered, but it seems hard to make
work. What should be done if the player changes sone data inside
the call screen, then rolls forward, causing a different set of
data to be updated?
Fixes#2563.
If the browser supports all types, play back audio through webaudio.
If not, play audio back through wasm/ffmpeg/ffmedia. This is intended
to allow games that use ogg or opus to work on Safari by default, while
games that only use mp3 audio can change config.webaudio_required_types
to gain the benefits of webaudio.
This is base on neobendict's solution in #3334, just encapsulated
into function. The problem is that setValueAtTime is the only way
to reliably set AudioParams in firefox, so all setting was moved
to run through that method.
Fixes#3334.
This fixes#3165, which was caused by the Fixed containing a layer
adjusting the times given to everything in that layer. When what
was in the layer was a MoveInterpolate, this led to the movement
restarting each time a new transition was created when an
interaction restarts.
The presence or abscence of a child seems like it's the right way to distinguish
ATL uses as a displayable from ATL that's being included.
Fixes#1956, per #3350.
Change the crop_relative transform property to take a third value, "area", representing the area supplied to the displayable. This is in addition to the current behavior when true, which has been changed to "child".
For now this isn't possible or supported, so there's no need for the
machinery to support it. At such time we have a clean way to implement
it this method can be updated to support it.
Based on #3160, with some changes to how the overriding works. See
the discussion there.
Closes#3160.
Co-Authored-By: Gouvernathor <aanonyme.personne@hotmail.fr>
This is a library that's intended to be used to provide os-native
file picking services to the launcher, to replace the various
libraries that are used now.
This is included with Ren'Py because it's not in pypi or in
operating systems, and it's needed for an os-linked build of
Ren'Py to work.
This makes RENPY_ATOM work without needing to download any part
of atom, and without needing to include the atom/ directory when
atom is not installed.
A list of screens that are always shown, even in the game menu
screens and other contexts where the overlays are not.
This is intended to make the trace screen always shown, see next
commit.
It's now possible to customize the screen that's used to show
individual images on per-gallery basis.
The Gallery.image and Gallery.unlock_image methods now take
arguments beginning with show_. These can be used by the image_screen
to display image metadata.
Fixes#22.
Fixes#2519.
This is done in the error handling routine, rather than __init__,
so that failing to advance the lexer before the first line remains
an error.
This keeps the keyboard from hiding the text that is being input,
which would keep thngs from working.
This is written so that it can be dropped into Ren'Py 7.3.5 and
7.4.11 without change - that's why transitions were leveraged,
rather than making changes to the Ren'Py core.
Currently keys for every store are added to a Rollback object's stores
and delta_ebc dicts, even if they contain no data. When rolling back
these dicts are iterated over, and the empty stores amount to no-ops.
These empty data structures are also serialised/de-serialised by the
save system (albeit efficiently) but yield no benefit.
This change is to skip recording entries for stores that haven't
changed, the resulting log should be functionally equivalent to existing
behaviour, but cut down on the amount of extraneous work to handle them.
As the code processing the log doesn't change or mind stores being
omitted, this change should be completely transparent and both forward
and backward compatible.
* Characters with the same count are grouped together on the same
line, and ordered by name.
* The statistics are only displayed when config.developer is true,
to prevent spoilers.
When fast-forwarding through ATL, one frame from every interpolation is
shown due to the first_frame flag. To avoid this, only set the flag if
the st rests within the duration of the interpolation. This ensures that
the flag is correctly set, but only for the interpolation that will be
active at the st.
Having `matrix[k] != matrix.m[k]` is weird. But changing the really faulty thing here, the `fields` list, would break compatibility with the existing matrices having been constructed and accessed via the .?d? accessors.
A quick look in the current code shows no use of the [] operator on Matrix instances, so this one should be broken rather than the three-letter accessors.
This fixes#3274, which is a subtle bug that was actually there in
Python 3, if rarely encountered. The problem is fundamentally
that:
eval("{ i for i in l if i == b }", globals={ "l" : [1, 2, 3]}, locals={ "b" : 2 })
Doesn't work, since the comprehension (non-list comprehensions in
py2, list comprehensions also in py3, generator expressions in
all versions) creates its own scope, and since b isn't defined in
an exterior scope, b is loaded with the LOAD_GLOBAL opcode, which
doesn't check locals.
To fix this, the statement is wrapped in a lambda that is immediately
called with the variables it loads - so the expression above is
turned into:
(lambda l, b : { i for i in l if i == b })(l, b)
This creates a new scope, which the python compile can find,
and compile the generator expression or comprehension to
pull from.
To make it easier to navigate all three.
renpy.revertable
Contains all of the RevertableX classes, as well as some
with different names that function similarly.
renpy.rollback
Contains the rollback infrastructure, except for the Revertable
classes.
renpy.python
Contains the stores and Python transformation, compilation,
and evaluation/execution.
This prevents a race condition caused by something being enqueued
but not played before renpy.get_playing() is called, the first
time the channel was used in a session.
This mostly manifested in in renpy.movie_cutscene(), which could
skip the movie if the outcome of the race was wrong.
We now use prefixes for the different paths, with temp: being
in the temp directory, backup: being a backup file, and no
prefix meaning the target directory.
This also adds the move command.
I have added a "{" at the beginning of the line 1881 to solve an uncaught exception:
# 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\nEsto no sobrescribirá gui/main_menu.png, gui/game_menu.png y gui/window_icon.png, pero creará archivos que no existen.{/size}"
Traceback generated by Ren'py prior to this change:
While processing text tag {/size} in u'{b}Aviso{/b}\nSi contin\xfaas se sobreescribir\xe1n las barras, botones, huecos de partida grabada, barras de desplazamiento y controles deslizantes personalizados.\n\n\xbfQu\xe9 deseas hacer?{size=-4}\n\nEsto no sobrescribir\xe1 gui/main_menu.png, gui/game_menu.png y gui/window_icon.png, pero crear\xe1 archivos que no existen.{/size}'.:
File "game/gui7.rpy", line 319, in <module>
File "game/interface.rpy", line 539, in choice
File "game/interface.rpy", line 329, in common
Exception: u'/size' closes a text tag that isn't open.
Regards.
Trying to coerce the child arg to Transform.__call__ into a displayable
adds an avoidable call and could lead to redundant duplication (in the
case where the coercion yields a duplicatable displayable).
Instead, use getattr in the duplicatable check to prevent raising and
allow __init__ (which already does arg coercion) to handle it as normal.
Refreshing a Text displayable whenever self.slow is True and
the slow text has not timed out should mean that regardless
of whatever is going wrong, slow_done should be called.
Per #3256.
The installer is a tool that will provided primitives for
installing loosely-coupled components (like editors) into
Ren'Py, and eventually, into games.
For now, this implements a download primitive.
The wanted and remove kwargs on Character.resolve_say_attributes and
images.apply_attributes were previously used to support the speaking
attribute feature, however that has since moved over to using the
temporary attribute functionality and these parameters are never passed
as anything beside empty lists, so we can clean them up.
This only happens when config.developer is not true. It's meant
to fix an issue introduced in 7.4, where a displayables
visit_all method can be called before an interaction begins.
That's a problem with ATL that depends on a variable that's defined
between the show and interaction - something like:
show atl_that_uses_foo
$ foo = True
"This."
The reasoning for visit_all was to allow the state of the ATL to
be taken (say, by having multiple shows in a row) without an
interaction to take place. Since the older games with this
problem can't successfully do this, it's okay to ignore this
error.
Fixes#3229.
This includes undocumenting some config variables that are not
relevant to modern Ren'Py. These variables will still work and
remain supported, but probably shouldn't be used in newer
games.
I have mainly tried to give consistency to the translation and corrected an abusive use of capital letters. In Spanish, it's not correct to capitalize the first letter of each word in a menu.
Regards.
This is intended as infrastructure that's meant to detect Python 2
code being loaded out of .rpyc files, that can't be easily changed
for Python 3, so fixes can be applied.
This includes a Python3-specific unpickler that loads as utf-8
with surrogateescape, and then converts it back to latin-1
for the purposes of unpickling datetime.time, datetime.date,
and datetime.datetime objects.
It also isolates pickle versioning into the one module.
It's now YYMMDDCC, where CC is the commit of the day starting with 1.
The goal is to make it easy to see how old a given nightly or release
is just by looking at the full version, and it also means it's
not necessary to tag that start of each release.
Make clear you must register the achievement with a stat_max in order to report progress. As the doc suggests registering achievements is only needed for Steam, thus crashing if `achievement.progress(name, complete)` is called.
Fix 1 : all four dump methods should use the same protocol, so all should use renpy.compat.pickle in any case.
Fix 2 : use the preferred protocol instead of the local highest
Fix 3 : partially fix the py2-py3 compatibility error
- Rename config var to make clear it contains callbacks.
- Add support for a generic fallback callback.
- Emphasise that attribute callbacks must not be influenced by state.
This is to support images having a "weak" set of default attributes
applied to them when they are first shown, allowing for more complex use
cases with a minimum of boilerplate in scripts.
While similar in nature to the existing config.adjust_attributes, this
feature only applies to images when they are first shown, and is "weak"
in the sense that it may not countermand attributes from the script.
That is, so that py2-windows-x86_64 and py3-windows-x86_64 can be
build alongside each other. This is a step in building Ren'Py 8,
and enables Ren'Py 7 to be distributed while Ren'Py 8 is worked on.
It's cleaned up in RevertableSet but not in RevertableList.
Making a cleaner code by getting the "wrapper" function out of the class definitions could be done, but pain to test/check, and this works.
Ren'Py will now always run an `unhovered` action when a displayable (or its
replacement) remains shown, and the focus changes. Previously, the unhovered
action would not run when the loss of focus was caused by showing a second
screen.
This traces back to LSF PM 295318 (and the rest of that thread.)
I noticed many of the "German" translations were left in English. I tried to fix as many as I could, but a few I was still unsure about. ("Clipboard voicing", for example.)
In general, these older translation files seem to be missing strings from the renderer (shift+G) screen.
This reintroduces some of the reverted fixes, but at the same time,
avoids th problems those fixes caused by storing the scope given
to the screen in the main context, meaning that it's no longer
required that scope remain the same object as the game changes.
(In practice, there were enough things that could changes the main
scope that it was hard to keep object identity stable.)
This is up from once per interaction, and only when Ren'Py is idle.
This allows progressive downloads to be loaded in the middle of
an interaction.
Fixes#3125.
This is an attempt to better implement the live2d fading semantics,
found at:
https://docs.live2d.com/cubism-editor-manual/about-fade/?locale=en_us
The idea is that if both motions have a parameter at the same
value, it shouldn't change, so that if we have .75 of A and .25
from B, the result should be .25 + .75 rather than
.75 * (1 - .25) + .25, which has the value of .8125.
And reuse them when creating the layer in the old store. This
allows the old layer_at lists to be used in a layer's _in_current_store
method.
Fixes#3126.
This reduces astonishment by making the behavior equal to what
Ren'Py would do normally.
Per p547953.
Not compatted, because gl_depth is probably fairly new when it
comes to use, and it's probably best to treat the behavior up
to now as undefined.
This ensures the object keeps the same identity, which means
that use without parameters works with the changes to uses_scope
in 43403e787e .
Fixes#195.
This allows pre-compiling all constants ATLs that don't have parameters (or have empty), including ATLs defined for show, scene and show layer statements
This change adds parameter passing during ATL analysis, so it includes processing of constant variables and pure functions.
This allows more ATL based images and ATL transforms to compile themselves in the init phase.
Anonymous transforms also take them into account based on screen analysis.
# Copyright 2004-2021 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -34,19 +34,18 @@ init python:
NO_RAPT_TEXT = _("To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
NO_JDK_TEXT = _("A 64-bit/x64 Java 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_KEY_TEXT = _("RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory.")
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
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.")
TABLET_TEXT = _("Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button.")
OUYA_TEXT = _("Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button.")
OUYA_TEXT = _("Attempts to emulate a televison-based Android console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button.")
INSTALL_SDK_TEXT = _("Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package.")
INSTALL_SDK_TEXT = _("Downloads and installs the Android SDK and supporting packages.")
GENERATE_KEYS_TEXT = _("Generates the keys required to sign the package.")
CONFIGURE_TEXT = _("Configures the package name, version, and other information about this project.")
PLAY_KEYS_TEXT = _("Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details.")
BUILD_TEXT = _("Builds the Android package.")
BUILD_AND_INSTALL_TEXT = _("Builds the Android package, and installs it on an Android device connected to your computer.")
BUILD_INSTALL_AND_LAUNCH_TEXT = _("Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device.")
@@ -57,10 +56,11 @@ init python:
CONNECT_TEXT = _("Connects to a device over Wi-Fi, on Android 11+.")
DISCONNECT_TEXT = _("Disconnects a device connected over Wi-Fi.")
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
import re
import os
@@ -92,6 +92,7 @@ init python:
import rapt.install_sdk
import rapt.plat
import rapt.interface
import rapt.keys
rapt.plat.renpy = True
rapt.plat.translate = __
@@ -110,11 +111,12 @@ init python:
return ANDROID_NO_JDK
if not os.path.exists(rapt.plat.adb):
return ANDROID_NO_SDK
if not os.path.exists(rapt.plat.path("project/local.properties")):
if not rapt.keys.keys_exist(project.current.path):
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")):
# This file contains strings used by RAPT, so the Ren'Py translation framework
# can find them. It's automatically generated by rapt/update_translations.py, and
# hence should not be changed by hand.
@@ -29,18 +29,23 @@ 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.")
__("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 much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number.")
__("The RAM size must contain only numbers and be positive.")
__("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.")
__("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\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.")
__("I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue.")
__("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.")
@@ -53,12 +58,16 @@ init python hide:
__("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.")
__("It looks like you're ready to start packaging games.")
__("Please enter your name or the name of your organization.")
__("I found an android.keystore file in the rapt directory. Do you want to use this file?")
__("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 found a bundle.keystore file in the rapt directory. Do you want to use this file?")
__("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?")
__("I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place.")
__("It looks like you're ready to start packaging games.")
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 python3-tk or tkinter package."), label=None)
# Add Python (with the same name as our executables)
self.add_python()
@@ -556,15 +640,31 @@ init python in distribute:
self.merge_file_lists()
# Rename the executable-like files.
if not build['renpy']:
self.rename()
self.rename()
# Sign the mac app once on Ren'Py.
if self.build["renpy"]:
fl = self.file_lists['binary']
app, rest = fl.split_by_prefix(self.app)
if app:
app = self.sign_app(app, macapp)
fl = FileList.merge([ app, rest ])
self.file_lists['binary'] = fl
else:
raise Exception("No mac app found.")
# The time of the update version.
self.update_version = int(time.time())
self.files_filter = files_filter
for p in build_packages:
for f in p["formats"]:
formats = p["formats"]
if force_format is not None:
formats = [ force_format ]
for f in formats:
self.make_package(
p["name"],
@@ -594,7 +694,7 @@ init python in distribute:
self.reporter.info(_("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."))
# Copyright 2004-2021 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -67,8 +67,8 @@ init 1 python in editor:
ei = EditorInfo(filename)
if ei.name in editors:
if editors[ei.name].mtime >= ei.mtime:
return
if editors[ei.name].mtime >= ei.mtime:
return
editors[ei.name] = ei
@@ -148,39 +148,79 @@ init 1 python in editor:
fei = fancy_editors = [ ]
# Atom.
AD = _("(Recommended) A modern and approachable text editor.")
# Visual Studio Code
AD1 = _("A modern editor with many extensions including advanced Ren'Py integration.")
AD2 = _("A modern editor with many extensions including advanced Ren'Py integration.\n{a=jump:reinstall_vscode}Upgrade Visual Studio Code to the latest version.{/a}")
e.installed = e.installed and (installed or 'RENPY_ATOM' in os.environ)
fei.append(e)
# jEdit - Only present if it exists on system.
if os.path.exists(os.path.join(config.renpy_base, "jedit")):
fei.append(FancyEditorInfo(
2,
_("jEdit"),
_("A mature editor that requires Java."),
"jedit",
_("1.8 MB download required."),
_("This may have occured because Java is not installed on this system."),
))
fei.append(FancyEditorInfo(
2,
"jEdit",
_("A mature editor that requires Java."),
"jedit",
_("1.8 MB download required."),
_("This may have occured because Java is not installed on this system."),
3,
_("Visual Studio Code (System)"),
_("Uses a copy of Visual Studio Code that you have installed outside of Ren'Py. It's recommended you install the language-renpy extension to add support for Ren'Py files."),
))
fei.append(FancyEditorInfo(
@@ -189,8 +229,11 @@ init 1 python in editor:
_("Invokes the editor your operating system has associated with .rpy files."),
None))
for k in editors:
if k in [ "Atom", "jEdit", "System Editor", "None" ]:
if k in [ "Visual Studio Code", "Visual Studio Code (System)", "Atom", "jEdit", "System Editor", "None" ]:
continue
fei.append(FancyEditorInfo(
@@ -210,7 +253,8 @@ init 1 python in editor:
# If we're in a linux distro or something, assume all editors work.
if not updater.can_update():
for i in fei:
i.installed = True
if i.dlc and not i.dlc.startswith("extension:"):
i.installed = True
def fancy_activate_editor(default=False):
"""
@@ -257,9 +301,12 @@ init 1 python in editor:
if not fe.installed:
# We don't check the status of this because fancy_activate_editor
_("What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."),
_("What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."),
[
((1066, 600), "1066x600"),
((1280, 720), "1280x720"),
((1920, 1080), "1920x1080"),
((2560, 1440), "2560x1440"),
((3840, 2160), "3840x2160"),
("custom", _("Custom. The GUI is optimized for a 16:9 aspect ratio.")),
],
(1280, 720),
default_size,
cancel=Jump("front_page"),
)
@@ -362,7 +356,7 @@ label gui_project_size:
try:
gui_width = int(gui_width)
except:
except Exception:
interface.error(_("The width must be a number."), label=None)
continue
break
@@ -378,7 +372,7 @@ label gui_project_size:
try:
gui_height = int(gui_height)
except:
except Exception:
interface.error(_("The height must be a number."), label=None)
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 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.")
add SPACER
textbutton _("Install Live2D Cubism SDK for Native"):
action Jump("prompt_live2d")
screen install_live2d():
frame:
style_group "l"
@@ -125,10 +170,6 @@ screen install():
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"):
@@ -146,33 +187,6 @@ screen install():
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-2021 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -41,7 +41,7 @@ init python:
try:
if (language is None) or os.path.exists(os.path.join(config.renpy_base, "templates", language)):
legacy = True
except:
except Exception:
pass
if new and legacy:
@@ -74,11 +74,11 @@ label new_project:
cancel=Jump("front_page"),
)
else:
new_project_language = (_preferences.language or "english").title()
new_project_language = __("{#language name and font}")
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]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another 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."), cancel=Jump("front_page"))
new "[project_dir!q] يوجد مسبقاً, الرجاء اختيار اسم مختلف."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "ما هو الحجم المطلوب للمشروع؟ رينباي يستطيع تكبير و تصغير حجم النافذة لتناسب الشاشة, لكن الحجم الذي ستختاره هنا هو الحجم القياسي, و الذي ستظهر فيه الصور و الشخصيات في أوضح شكل لها. \n\n الحجم الذي يناسب اغلب الشاشات هو 1280×730 بكسل."
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
new "{b}Huomaa:{/b} Microsoftin DirectXverkkoasennusohjelma asentaa, oletusarvoisesti, Bing-työkalupalkin. Jos et halua tätä työkalupalkkia, poista valinta oikeasta laatikosta."
new "{b}Huomaa:{/b} Microsoftin DirectX-verkkoasennusohjelma asentaa, oletusarvoisesti, Bing-työkalupalkin. Jos et halua tätä työkalupalkkia, poista valinta oikeasta laatikosta."
# 00gltest.rpy:204
old "When setup finishes, please click below to restart this program."
old "## The init offset statement causes the init code in this file to run before init code in any other file."
new "## The init offset statement causes the init code in this file to run before init code in any other file."
new "## init offset-lause käskee ajamaan tämän tiedoston init-koodin ennen muiden tiedostojen init-koodia."
# gui.rpy:9
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## gui.init-metodin kutsuminen nollaa tyylit järkeviin vakioasetuksiin, sekä asettaa peli-ikkunan leveyden ja korkeuden."
# gui.rpy:21
old "## Colors"
new "## Colors"
new "## Värit"
# gui.rpy:23
old "## The colors of text in the interface."
new "## The colors of text in the interface."
new "## Ikkunan tekstien väritys."
# gui.rpy:25
old "## An accent color used throughout the interface to label and highlight text."
new "## An accent color used throughout the interface to label and highlight text."
new "## Korostusväri tekstin korostamista sekä merkkausta varten."
# gui.rpy:29
old "## The color used for a text button when it is neither selected nor hovered."
new "## The color used for a text button when it is neither selected nor hovered."
new "## Tekstipainikkeen käyttämä väri, kun se ei ole valittuna eikä kursori ole sen päällä."
# gui.rpy:32
old "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
new "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
new "## Pikkuväriä käytetään pienelle tekstille, jonka tulee olla kirkkaampi tai tummempi erottuakseen."
# gui.rpy:36
old "## The color that is used for buttons and bars that are hovered."
new "## The color that is used for buttons and bars that are hovered."
new "## Painikkeiden käyttämä väri, kun ne ovat valittuja tai kursori on niiden päällä."
# gui.rpy:39
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## Tekstipainikkeen käyttämä väri, kun se on valittuna mutta ei aktiivisessa ikkunassa."
# gui.rpy:43
old "## The color used for a text button when it cannot be selected."
new "## The color used for a text button when it cannot be selected."
new "## Tekstipainikkeen käyttämä väri, kun se ei ole valittavissa."
# gui.rpy:46
old "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
new "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
new "## Värit, joita käytetään täyttämättömien palkkien osiin. Näitä ei käytetä suoraan, vaan ainoastaan palkkikuvatiedostojen generoinnissa."
# gui.rpy:51
old "## The colors used for dialogue and menu choice text."
new "## The colors used for dialogue and menu choice text."
new "## Värit, joita käytetään dialogin ja valikoiden tekstissä."
# gui.rpy:56
old "## Fonts and Font Sizes"
new "## Fonts and Font Sizes"
new "## Fontit sekä fonttikoot"
# gui.rpy:58
old "## The font used for in-game text."
new "## The font used for in-game text."
new "## Pelin sisäisen tekstin fontti."
# gui.rpy:61
old "## The font used for character names."
new "## The font used for character names."
new "## Hahmojen nimien fontti."
# gui.rpy:64
old "## The font used for out-of-game text."
new "## The font used for out-of-game text."
new "## Pelin ulkoisen tekstin fontti."
# gui.rpy:67
old "## The size of normal dialogue text."
new "## The size of normal dialogue text."
new "## Normaalin dialogitekstin fonttikoko."
# gui.rpy:70
old "## The size of character names."
new "## The size of character names."
new "## Hahmojen nimien fonttikoko."
# gui.rpy:73
old "## The size of text in the game's user interface."
new "## The size of text in the game's user interface."
new "## Pelin käyttöliittymän tekstin koko."
# gui.rpy:76
old "## The size of labels in the game's user interface."
new "## The size of labels in the game's user interface."
new "## Pelin käyttöliittymän otsikoiden koko."
# gui.rpy:79
old "## The size of text on the notify screen."
new "## The size of text on the notify screen."
new "## Tekstin koko ilmoitusikkunassa."
# gui.rpy:82
old "## The size of the game's title."
new "## The size of the game's title."
new "## Pelin nimen fonttikoko."
# gui.rpy:86
old "## Main and Game Menus"
new "## Main and Game Menus"
new "## Pää- ja pelivalikot"
# gui.rpy:88
old "## The images used for the main and game menus."
new "## The images used for the main and game menus."
new "## Pää- ja pelivalikoiden käyttämät kuvat."
# gui.rpy:92
old "## Should we show the name and version of the game?"
new "## Should we show the name and version of the game?"
new "## Tulisiko meidän näyttää pelin nimi ja versio?"
# gui.rpy:96
old "## Dialogue"
new "## Dialogue"
new "## Dialogi"
# gui.rpy:98
old "## These variables control how dialogue is displayed on the screen one line at a time."
new "## These variables control how dialogue is displayed on the screen one line at a time."
new "## Nämä muuttujat ohjaavat dialogin tulostusta näytölle rivi kerrallaan."
# gui.rpy:101
old "## The height of the textbox containing dialogue."
new "## The height of the textbox containing dialogue."
new "## Dialogi-ikkunan korkeus."
# gui.rpy:104
old "## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is center, and 1.0 is the bottom."
new "## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is center, and 1.0 is the bottom."
new "## Dialogi-ikkunan sijainti pystytasossa näytöllä. 0.0 on ikkunan yläreuna, 0.5 keskikohta, ja 1.0 alareuna."
# gui.rpy:109
old "## The placement of the speaking character's name, relative to the textbox. These can be a whole number of pixels from the left or top, or 0.5 to center."
new "## The placement of the speaking character's name, relative to the textbox. These can be a whole number of pixels from the left or top, or 0.5 to center."
new "## Puhuvan hahmon nimen sijainti suhteeessa dialogi-ikkunan sijaintiin. Arvot voivat olla pikseleiden määrä kokonaislukuina, tai 0.5 keskikohtana."
# gui.rpy:114
old "## The horizontal alignment of the character's name. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## The horizontal alignment of the character's name. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## Hahmon nimen sijainti vaakatasossa. Arvo voi olla 0.0 vasemmalle reunalle, 0.5 keskitetylle, tai 1.0 oikealle reunalle."
# gui.rpy:118
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## Hahmon nimen sisältävän laatikon leveys, korkeus, ja reunan paksuus. Arvo None päättää koon automaattisesti."
# gui.rpy:123
old "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## Hahmon nimilaatikon reunat, järjestyksessä vasen, ylä, oikea, ja alaosa."
# gui.rpy:127
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## Arvon ollessa True, nimilaatikon tausta käyttää itseään toistavaa taustakuvaa. Arvon ollessa False, taustakuvan koko skaalautuu."
# gui.rpy:132
old "## The placement of dialogue relative to the textbox. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
new "## The placement of dialogue relative to the textbox. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
new "## Dialogin sijainti suhteessa dialogi-ikkunaan. Arvot voivat olla pikseleiden määrä kokonaislukuina, tai 0.5 keskikohtana."
# gui.rpy:138
old "## The maximum width of dialogue text, in pixels."
new "## The maximum width of dialogue text, in pixels."
new "## Dialogitekstin maksimileveys pikseleinä."
# gui.rpy:141
old "## The horizontal alignment of the dialogue text. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## The horizontal alignment of the dialogue text. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## Dialogin sijainti vaakatasossa. Arvo voi olla 0.0 vasemmalle reunalle, 0.5 keskitetylle, tai 1.0 oikealle reunalle."
# gui.rpy:146
old "## Buttons"
new "## Buttons"
new "## Painikkeet"
# gui.rpy:148
old "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
new "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
new "## Nämä muuttujat, gui/button-kansiossa olevien kuvatiedostojen ohella, ohjaavat painikkeiden ulkoasua."
# gui.rpy:151
old "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
new "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
new "## Painikkeen leveys ja korkeus, pikseleinä. Arvon ollessa None, Ren'Py laskee sopivan koon."
# gui.rpy:155
old "## The borders on each side of the button, in left, top, right, bottom order."
new "## The borders on each side of the button, in left, top, right, bottom order."
new "## Reunat painikkeen jokaisella sivulla, järjestyksessä vasen, ylä, oikea, ja alareuna."
# gui.rpy:158
old "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
new "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
new "## Arvon ollessa True, painikkeen tausta käyttää itseään toistavaa taustakuvaa. Arvon ollessa False, taustakuvan koko skaalautuu lineaarisesti."
# gui.rpy:162
old "## The font used by the button."
new "## The font used by the button."
new "## Painikkeen käyttämä fontti."
# gui.rpy:165
old "## The size of the text used by the button."
new "## The size of the text used by the button."
new "## Painikkeen käyttämä fonttikoko."
# gui.rpy:179
old "## These variables override settings for different kinds of buttons. Please see the gui documentation for the kinds of buttons available, and what each is used for."
new "## These variables override settings for different kinds of buttons. Please see the gui documentation for the kinds of buttons available, and what each is used for."
new "## Nämä muuttujat yliajavat erilaisten painikkeiden oletusasetuksia. Luethan lisätietoa erilaisista painikkeista sekä niiden käyttötarkoituksista GUI-dokumentaatiosta."
# gui.rpy:183
old "## These customizations are used by the default interface:"
new "## These customizations are used by the default interface:"
new "## Nämä muokkaukset ovat käytössä oletuskäyttöliittymässä:"
# gui.rpy:198
old "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
new "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
new "## Voit myös halutessasi lisätä omia muokkauksiasi lisäämällä oikein nimettyjä muuttujia. Voit esimerkiksi ottaa seuraavan rivin pois kommentista asettaaksesi valikkopainikkeen leveyden."
# gui.rpy:205
old "## Choice Buttons"
new "## Choice Buttons"
new "## Valikon Painikkeet"
# gui.rpy:207
old "## Choice buttons are used in the in-game menus."
new "## Choice buttons are used in the in-game menus."
new "## Nämä muuttujat määrittävät pelin sisäisten valikoiden painikkeiden ominaisuuksia."
# gui.rpy:220
old "## File Slot Buttons"
new "## File Slot Buttons"
new "## Tallennuspaikan Painikkeet"
# gui.rpy:222
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## Tallennuspaikan painike on erityispainike, joka sisältää esikatselukuvan ja tekstiselitteen tallennuspaikan sisällöstä. Tallennuspaikka käyttää kuvatiedostoja gui/button-kansiosta, kuten muutkin painikkeet."
# gui.rpy:226
old "## The save slot button."
new "## The save slot button."
new "## Tallennuspaikan painike."
# gui.rpy:234
old "## The width and height of thumbnails used by the save slots."
new "## The width and height of thumbnails used by the save slots."
new "## Tallennuspaikan käyttämien esikatselukuvien leveys ja korkeus."
# gui.rpy:238
old "## The number of columns and rows in the grid of save slots."
new "## The number of columns and rows in the grid of save slots."
new "## Tallennuspaikkojen ruudukon rivien ja sarakkeiden lukumäärä."
# gui.rpy:243
old "## Positioning and Spacing"
new "## Positioning and Spacing"
new "## Sijainti ja Välit"
# gui.rpy:245
old "## These variables control the positioning and spacing of various user interface elements."
new "## These variables control the positioning and spacing of various user interface elements."
new "## Nämä muuttujat säätelevät erilaisten käyttöliittymän komponenttien sijaintia ja väljäyttä."
# gui.rpy:248
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## Siirtymäpainikkeiden vasemman puolen sijainti suhteessa ikkunan vasempaan reunaan."
# gui.rpy:252
old "## The vertical position of the skip indicator."
new "## The vertical position of the skip indicator."
new "## Sivuutusilmaisimen sijainti pystyakselilla."
# gui.rpy:255
old "## The vertical position of the notify screen."
new "## The vertical position of the notify screen."
new "## Ilmoitusnäytön sijainti pystyakselilla."
# gui.rpy:258
old "## The spacing between menu choices."
new "## The spacing between menu choices."
new "## Valikon vaihtoehtojen välinen tila."
# gui.rpy:261
old "## Buttons in the navigation section of the main and game menus."
new "## Buttons in the navigation section of the main and game menus."
new "## Painikkeiden välinen tila pää- ja pelivalikoissa."
# gui.rpy:264
old "## Controls the amount of spacing between preferences."
new "## Controls the amount of spacing between preferences."
new "## Hallitsee asetusten välistä etäisyyttä."
# gui.rpy:267
old "## Controls the amount of spacing between preference buttons."
new "## Controls the amount of spacing between preference buttons."
new "## Hallitsee asetusten painikkeiden välisiä etäisyyksiä."
# gui.rpy:270
old "## The spacing between file page buttons."
new "## The spacing between file page buttons."
new "## Tyhjä tila tallennussivun painikkeiden välillä."
# gui.rpy:273
old "## The spacing between file slots."
new "## The spacing between file slots."
new "## Tyhjä tila tallennuspaikkojen välillä."
# gui.rpy:277
old "## Frames"
new "## Frames"
new "## Reunat"
# gui.rpy:279
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## Nämä muuttujaat säätelevät käyttöliittymän komponentteja ympäröivien reunojen ominaisuuksia, kun varsinaista ikkunaa ei ole."
# gui.rpy:282
old "## Generic frames that are introduced by player code."
new "## Generic frames that are introduced by player code."
new "## Geneeriset reunat, joita koodi voi luoda."
# gui.rpy:285
old "## The frame that is used as part of the confirm screen."
new "## The frame that isused as part of the confirm screen."
new "## Varmistusikkunan käyttämä reuna."
# gui.rpy:288
old "## The frame that is used as part of the skip screen."
new "## The frame that is used as part of the skip screen."
new "## Sivuutusikkunan käyttämä reuna."
# gui.rpy:291
old "## The frame that is used as part of the notify screen."
new "## The frame that is used as part of the notify screen."
new "## Ilmoitusikkunan käyttämä reuna."
# gui.rpy:294
old "## Should frame backgrounds be tiled?"
new "## Should frame backgrounds be tiled?"
new "## Tulisiko kehyksen taustakuvan toistaa itseään?"
# gui.rpy:298
old "## Bars, Scrollbars, and Sliders"
new "## Bars, Scrollbars, and Sliders"
new "## Palkit, Vierityspalkit, ja Liukuvalinnat"
# gui.rpy:300
old "## These control the look and size of bars, scrollbars, and sliders."
new "## These control the look and size of bars, scrollbars, and sliders."
new "## Nämä muokkaavat palkkien, vierityspalkkien, ja liukuvalintojen ulkonäköä sekä kokoa."
# gui.rpy:302
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written code."
new "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written code."
new "## Oletusarvoinen graafinen käyttöliittymä käyttää vain liukuvalintoja sekä pystysuoria vierityspalkkeja. Kaikkia muita käytetään vain jos projektin koodi niitä erikseen käyttää."
# gui.rpy:305
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## Palkkien, vierityspalkkien, ja liukuvalintojen korkeus ja leveys."
# gui.rpy:311
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## True if bar images should be tiled. False if they should be linearly scaled."
new "## Arvon ollessa True, palkit käyttävät itseään toistavia taustakuvia. Arvon ollessa False, taustakuvan koko skaalautuu lineaarisesti."
# gui.rpy:316
old "## Horizontal borders."
new "## Horizontal borders."
new "## Vaakatason reunat."
# gui.rpy:321
old "## Vertical borders."
new "## Vertical borders."
new "## Pystysuorat reunat."
# gui.rpy:326
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## Päättää, näkyvätkö tyngät vierityspalkit. \"hide\" piilottaa ne, None pitää ne näkyvillä."
# gui.rpy:331
old "## History"
new "## History"
new "## Historia"
# gui.rpy:333
old "## The history screen displays dialogue that the player has already dismissed."
new "## The history screen displays dialogue that the player has already dismissed."
new "## Historia-ikkuna näyttää dialogin, jonka pelaaja on jo lukenut."
# gui.rpy:335
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## The number of blocks of dialogue history Ren'Py will keep."
new "## Määrittää, montako dialogitekstiä Ren'Py pitää muistissaan."
# gui.rpy:338
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## Historia-näytön yksittäisen dialogin korkeus, tai None jolloin korkeus vaihtelee, lisäten prosessorin rasitusta."
# gui.rpy:342
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## The position, width, and alignment of the label giving the name of the speaking character."
new "## Puhuvan hahmon nimen sijainti, leveys, ja ryhmäytys."
# gui.rpy:349
old "## The position, width, and alignment of the dialogue text."
new "## The position, width, and alignment of the dialogue text."
new "## Dialogitekstin sijainti, leveys, ja ryhmäytys."
# gui.rpy:356
old "## NVL-Mode"
new "## NVL-Mode"
new "## NVL-Tila"
# gui.rpy:358
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## NVL-tilan näyttö näyttää NVL-tilan hahmojen dialogin."
# gui.rpy:360
old "## The borders of the background of the NVL-mode background window."
new "## The borders of the background of the NVL-mode background window."
new "## NVL-tilan ikkunan taustan reunat."
# gui.rpy:363
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## NVL-tilan dialogin korkeus. Asetettaessa arvoon None, korkeus säätyy automaattisesti."
# gui.rpy:367
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## Väli NVL-tilan dialogien sekä NVL-tilan valikon välillä, kun gui.nvl_height on None."
# gui.rpy:384
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## The position, width, and alignment of nvl_thoughttext (the text said by the nvl_narrator character.)"
new "## nvl_thought-tekstin sijainti, leveys, ja ryhmäytys (nvl_narrator-hahmon puhuma teksti.)"
# gui.rpy:391
old "## The position of nvl menu_buttons."
new "## The position of nvl menu_buttons."
new "## NVL-valikon painikkeiden sijainti."
# gui.rpy:403
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## Kasvattaa pikavalikon painikkeiden kokoa mobiililaitteilla, tehden niistä helpompia käyttää."
# gui.rpy:409
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## Muuttaa useiden käyttöliittymän elementtien kokoa ja välejä, tehden niistä helpommin erottuvia matkapuhelimilla."
# gui.rpy:413
old "## Font sizes."
new "## Font sizes."
new "## Fonttikoot."
# gui.rpy:421
old "## Adjust the location of the textbox."
new "## Adjust the location of the textbox."
new "## Säädä teksti-ikkunan sijaintia."
# gui.rpy:427
old "## Change the size and spacing of items in the game menu."
new "## Change the size and spacing of items in the game menu."
new "## Mukauta pelivalikon elementtien kokoa ja sijaintia."
old "The command is being run in a new operating system console window."
new "The command is being run in a new operating system console window."
new "Komentoa ajetaan uuudessa käyttöjärjestelmän konsoli-ikkunassa."
# distribute.rpy:443
old "Scanning project files..."
@@ -259,19 +261,19 @@ translate finnish strings:
# distribute.rpy:1050
old "Unpacking the Macintosh application for signing..."
new "Unpacking the Macintosh application for signing..."
new "Puretaan Macintosh-sovellusta allekirjoitusta varten..."
# distribute.rpy:1060
old "Signing the Macintosh application..."
new "Signing the Macintosh application..."
new "Allekirjoitetaan Macintosh-sovellusta..."
# distribute.rpy:1082
old "Creating the Macintosh DMG..."
new "Creating the Macintosh DMG..."
new "Luodaan Macintosh DMG-tiedostoa..."
# distribute.rpy:1091
old "Signing the Macintosh DMG..."
new "Signing the Macintosh DMG..."
new "Allekirjoitetaan Macintosh DMG-tiedostoa..."
# distribute.rpy:1248
old "Writing the [variant] [format] package."
@@ -315,7 +317,7 @@ translate finnish strings:
# distribute_gui.rpy:199
old "Upload to itch.io"
new "Upload to itch.io"
new "Lataa itch.io-palveluun"
# distribute_gui.rpy:215
old "Build Packages:"
@@ -415,11 +417,11 @@ translate finnish strings:
# front_page.rpy:120
old "+ Create New Project"
new "+ Luo uusi projekti"
new "+ Luo Uusi Projekti"
# front_page.rpy:130
old "Launch Project"
new "Suorita projekti"
new "Suorita Projekti"
# front_page.rpy:147
old "[p.name!q] (template)"
@@ -479,7 +481,7 @@ translate finnish strings:
# front_page.rpy:237
old "Change/Update GUI"
new "Change/Update GUI"
new "Muokkaa/Päivitä GUI"
# front_page.rpy:239
old "Change Theme"
@@ -523,23 +525,23 @@ translate finnish strings:
# gui7.rpy:236
old "Select Accent and Background Colors"
new "Select Accent and Background Colors"
new "Valitse Korostus- ja Taustavärit"
# gui7.rpy:250
old "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
new "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
new "Ole hyvä ja valitse haluamasi väriteema, ja klikkaa Seuraava. Näitä värejä voi vaihtaa ja muokata myöhemmin."
# gui7.rpy:294
old "{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"
new "{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"
new "{b}varoitus{/b}\nJatkamalla yliajat muokatut palkki-, painike-, tallennus-, vierityspalkki-, ja liukuvalintakuvat.\n\nHaluatko jatkaa?"
# gui7.rpy:294
old "Choose new colors, then regenerate image files."
new "Choose new colors, then regenerate image files."
new "Valitse uudet värit, ja luo kuvatiedostot uudelleen."
# gui7.rpy:294
old "Regenerate the image files using the colors in gui.rpy."
new "Regenerate the image files using the colors in gui.rpy."
new "Luo kuvatiedostot uudelleen käyttäen värejä gui.rpy-tiedostossa."
# gui7.rpy:314
old "PROJECT NAME"
@@ -562,16 +564,16 @@ translate finnish strings:
new "[project_dir!q] on jo olemassa. Ole hyvä ja valitse toinen nimi projektillesi."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "Mitä resoluutiota projektin tulisi käyttää? Vaikka Ren'Py kykenee skaalaamaan ikkunaa molempiin suuntiin, tämä on ikkunan alustava koko, resoluutio jolla grafiikka piirretään, ja koko jossa grafiikka on terävimmillään.\n\nOletusasetus [default_size[0]]x[default_size[1]] on varteenotettava kompromissi."
# gui7.rpy:389
old "Creating the new project..."
new "Creating the new project..."
new "Luodaan uutta projektia..."
# gui7.rpy:391
old "Updating the project..."
new "Updating the project..."
new "Päivitetään projektia..."
# interface.rpy:107
old "Documentation"
@@ -735,27 +737,27 @@ translate finnish strings:
# itch.rpy:60
old "The built distributions could not be found. Please choose 'Build' and try again."
new "The built distributions could not be found. Please choose 'Build' and try again."
new "Koottuja jakeluita ei löytynyt. Valitse 'Kokoa' ja yritä uudelleen."
# itch.rpy:91
old "No uploadable files were found. Please choose 'Build' and try again."
new "No uploadable files were found. Please choose 'Build' and try again."
new "Ladattavia tiedostoja ei löytynyt. Valitse 'Kokoa' ja yritä uudelleen."
# itch.rpy:99
old "The butler program was not found."
new "The butler program was not found."
new "Butler-ohjelmaa ei löytynyt."
# itch.rpy:99
old "Please install the itch.io app, which includes butler, and try again."
new "Please install the itch.io app, which includes butler, and try again."
new "Ole hyvä ja asenna itch.io-sovellus, joka sisältää butlerin, ja yritä uudelleen."
# itch.rpy:108
old "The name of the itch project has not been set."
new "The name of the itch project has not been set."
new "Itch-projektin nimeä ei ole asetettu."
# itch.rpy:108
old "Please {a=https://itch.io/game/new}create your project{/a}, then add a line like \n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} to options.rpy."
new "Please {a=https://itch.io/game/new}create your project{/a}, then add a line like \n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} to options.rpy."
new "Ole hyvä ja {a=https://itch.io/game/new}luo projektisi{/a}, ja tämän jälkeen lisää rivi kuten \n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} options.rpy-tiedostoon."
# mobilebuild.rpy:109
old "{a=%s}%s{/a}"
@@ -827,23 +829,23 @@ translate finnish strings:
# new_project.rpy:38
old "New GUI Interface"
new "New GUI Interface"
new "Uusi GUI-käyttöliittymä"
# new_project.rpy:48
old "Both interfaces have been translated to your language."
new "Both interfaces have been translated to your language."
new "Molemmat käyttöliittymät on käännetty kielellesi."
# new_project.rpy:50
old "Only the new GUI has been translated to your language."
new "Only the new GUI has been translated to your language."
new "Vain uusi GUI on käännetty kielellesi."
# new_project.rpy:52
old "Only the legacy theme interface has been translated to your language."
new "Only the legacy theme interface has been translated to your language."
new "Vain vanha teemakäyttöliittymä on käännetty kielellesi."
# new_project.rpy:54
old "Neither interface has been translated to your language."
new "Neither interface has been translated to your language."
new "Kumpaakaan käyttöliittymää ei ole käännetty kielellesi."
# new_project.rpy:63
old "The projects directory could not be set. Giving up."
@@ -851,11 +853,11 @@ translate finnish strings:
# new_project.rpy:69
old "Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."
new "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 "Kumpaa käyttöliittymää haluaisit käyttää? Uusi GUI on modernin näköinen, tukee leveitä näyttöjä sekä mobiililaitteita, ja sen kustomointi on helpompaa. Vanhat teemat voivat olla tarpeellisia vanhan esimerkkikoodin kanssa.\n\n[language_support!t]\n\nJos epäröit, valitse uusi käyttöliittymä, ja klikkaa Jatka oikeassa alakulmassa."
# new_project.rpy:69
old "Legacy Theme Interface"
new "Legacy Theme Interface"
new "Vanha Teemakäyttöliittymä"
# new_project.rpy:90
old "Choose Project Template"
@@ -883,7 +885,7 @@ translate finnish strings:
# preferences.rpy:96
old "Not Set"
new "Ei valittu"
new "Ei Valittu"
# preferences.rpy:111
old "Text Editor:"
@@ -991,11 +993,11 @@ translate finnish strings:
# translations.rpy:63
old "Translations: [project.current.name!q]"
new "Translations: [project.current.name!q]"
new "Käännökset: [project.current.name!q]"
# translations.rpy:104
old "The language to work with. This should only contain lower-case ASCII characters and underscores."
new "The language to work with. This should only contain lower-case ASCII characters and underscores."
new "Työkieli. Tämän tulisi sisältää vain pieniä ASCII-merkkejä ja alaviivoja."
old "Generates or updates translation files. The files will be placed in game/tl/[persistent.translate_language!q]."
new "Generates or updates translation files. The files will be placed in game/tl/[persistent.translate_language!q]."
new "Luo tai päivittää käännöstiedostot. Tiedostot sijoitetaan kansioon game/tl/[persistent.translate_language!q]."
# translations.rpy:168
old "Extract String Translations"
new "Extract String Translations"
new "Poimi Merkkijonojen Käännökset"
# translations.rpy:170
old "Merge String Translations"
new "Merge String Translations"
new "Yhdistä Merkkijonojen Käännökset"
# translations.rpy:175
old "Replace existing translations"
new "Replace existing translations"
new "Korvaa olemassaolevat käännökset"
# translations.rpy:176
old "Reverse languages"
new "Reverse languages"
new "Vaihda kielet päikseen"
# translations.rpy:180
old "Update Default Interface Translations"
new "Update Default Interface Translations"
new "Päivitä Oletusarvoiset Käyttöliittymän Käännökset"
# 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 "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 "Poimi-komento mahdollistaa merkkijonokäännösten poimimisen olemassaolevasta projektista väliaikaiseen tiedostoon.\n\nYhdistä-komento yhdistää poimitut käännökset toiseen projektiin."
old "## This file contains options that can be changed to customize your game."
new "## This file contains options that can be changed to customize your game."
new "## Tämä tiedosto sisältää asetuksia, joita muokkaamalla voit mukauttaa peliäsi."
# options.rpy:4
old "## Lines beginning with two '#' marks are comments, and you shouldn't uncomment them. Lines beginning with a single '#' mark are commented-out code, and you may want to uncomment them when appropriate."
new "## Lines beginning with two '#' marks are comments, and you shouldn't uncomment them. Lines beginning with a single '#' mark are commented-out code, and you may want to uncomment them when appropriate."
new "## Rivit, jotka alkavat kahdells '#'-merkillä, ovat kommentteja eikä sinun tule muuttaa niitä ohjelmakoodiksi. Rivit, jotka alkavat yhdellä '#'-merkillä, ovat kommentoitua koodia, ja voit halutessasi palauttaa ne ohjelmakoodiksi."
# options.rpy:10
old "## Basics"
new "## Basics"
new "## Perusteet"
# options.rpy:12
old "## A human-readable name of the game. This is used to set the default window title, and shows up in the interface and error reports."
new "## A human-readable name of the game. This is used to set the default window title, and shows up in the interface and error reports."
new "## Ihmisille luettava pelin nimi. Tätä käytetään peli-ikkunan nimen asetuksessa, ja se näkyy pelin ikkunassa sekä virheraporteissa."
# options.rpy:15
old "## The _() surrounding the string marks it as eligible for translation."
new "## The _() surrounding the string marks it as eligible for translation."
new "## _() merkkijonon ympärillä merkitsee sen soveltuvaksi käännöksille."
# options.rpy:17
old "Ren'Py 7 Default GUI"
new "Ren'Py 7 Default GUI"
new "Ren'Py 7 Oletusarvoinen GUI"
# options.rpy:20
old "## Determines if the title given above is shown on the main menu screen. Set this to False to hide the title."
new "## Determines if the title given above is shown on the main menu screen. Set this to False to hide the title."
new "## Päättää, näytetäänkö ylläannettu nimi pelin päävalikossa. Aseta arvoksi False piilottaaksesi nimen."
# options.rpy:26
old "## The version of the game."
new "## The version of the game."
new "## Pelin versio."
# 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 "## Text that is placed on the game's about screen. To insert a blank line between paragraphs, write \\n\\n."
new "## Teksti, joka näkyy pelin tietoja-ikkunassa. Lisätäksesi tyhjän rivin lauseiden väliin, kirjoita \\n\\n."
# options.rpy:37
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 "## 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 "## Lyhyt nimi pelille, jota käytetään kootuille ohjelmatiedostoille sekä kansioille. Nimen on oltava pelkkiä ASCII-merkkejä, eikä se saa sisältää välilyöntejä, pisteitä, eikä puolipisteitä."
# options.rpy:44
old "## Sounds and music"
new "## Sounds and music"
new "## Äänet ja musiikki"
# 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 "## 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 "## Nämä kolme muuttujaa ohjaavat, mitkä mikserit näytetään pelaajalle oletusarvoisesti. Asettamalla arvoksi False piilottaa kyseisen mikserin."
# 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."
new "## 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 "## Mahdollistaaksesi käyttäjän soittaa testiääni äänitehoste- tai puhekanavilla, palauta seuraava kommentti takaisin ohjelmakoodiksi ja käytä sitä valitaksesi sopivan testiäänen."
# options.rpy:62
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 "## 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 "## Palauta seuraava rivi takaisin ohjelmakoodiksi valitaksesi äänitiedoston, jota soitetaan pelaajan ollessa päävalikossa. Tämän tiedoston toisto jatkuu pelin alkaessa, kunnes se pysäytetään tai toinen tiedosto alkaa soimaan."
# options.rpy:69
old "## Transitions"
new "## Transitions"
new "## Siirtymät"
# options.rpy:71
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 "## 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 "## Nämä muuttujat asettavat erilaisia siirtymiä eri tapahhtumien kohdalla. Jokainen muuttuja tulee asettaa johonkin siirtymään, tai None mikäli siirtymää ei haluta käyttää."
# options.rpy:75
old "## Entering or exiting the game menu."
new "## Entering or exiting the game menu."
new "## Pelivalikon avaaminen ja sulkeminen."
# options.rpy:81
old "## A transition that is used after a game has been loaded."
new "## A transition that is used after a game has been loaded."
new "## Siirtymä, jota käytetään kun peli on ladattu."
# options.rpy:86
old "## Used when entering the main menu after the game has ended."
new "## Used when entering the main menu after the game has ended."
new "## Käytetään siirryttäessä päävalikkoon pelin päätyttyä."
# options.rpy:91
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
new "## 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 "## Muuttujaa siirtymän valitsemiseksi pelin alkaessa ei ole olemassa. Sen sijaan, käytä with-väitettä näytettyäsi ensimmäisen kohtauksen."
# options.rpy:96
old "## Window management"
new "## Window management"
new "## Ikkunanhallinta"
# options.rpy:98
old "## This controls when the dialogue window is displayed. If \"show\", it is always displayed. If \"hide\", it is only displayed when dialogue is present. If \"auto\", the window is hidden before scene statements and shown again once dialogue is displayed."
new "## 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 "## Tämä muokkaa dialogi-ikkunan näkyvyyttä. Arvon ollessa \"show\", ikkuna on aina näkyvissä. Mikäli se on \"hide\", ikkuna näkyy vain kun on dialogia mitä näyttää. Ja jos se on \"auto\", ikkuna ei ole näkyvissä ennen scene-lauseita ja näytetään kun dialogia on näytettävänä."
# options.rpy:103
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## Pelin alettua, tätä voidaan muuttaa \"window show\", \"window hide\", ja \"window auto\" -lauseilla."
# options.rpy:109
old "## Transitions used to show and hide the dialogue window"
new "## Transitions used to show and hide the dialogue window"
new "## Siirtymät, joita käytetään dialogi-ikkunan näytössä ja piilotuksessa"
# options.rpy:115
old "## Preference defaults"
new "## Preference defaults"
new "## Asetusten oletusarvot"
# options.rpy:117
old "## Controls the default text speed. The default, 0, is infinite, while any other number is the number of characters per second to type out."
new "## 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 "## Asettaa tekstin näytön oletusnopeuden. Oletusarvo, 0, on ääretön (teksti näkyy välittömästi), kaikki muut positiiviset luvut asettavat näytettyjen merkkien lukumäärän sekunnissa."
# options.rpy:123
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## Oletusarvoinen automaattisen jatkamisen viive. Suuremmat luvut johtavatt pidempiin viiveisiin, tuetut arvot ovat väliltä 0-30."
# options.rpy:129
old "## Save directory"
new "## Save directory"
new "## Tallennuskansio"
# options.rpy:131
old "## Controls the platform-specific place Ren'Py will place the save files for this game. The save files will be placed in:"
new "## Controls the platform-specific place Ren'Py will place the save files for this game. The save files will be placed in:"
new "## Asettaa alustariippuvaisen sijainnin, johon Ren'Py tallentaa pelitallennukset. Tallennustiedostot tallennetaan kansioon:"
# options.rpy:134
old "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
@@ -131,65 +131,65 @@ translate finnish strings:
# options.rpy:140
old "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
new "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
new "## Tätä ei yleensä kannata muuttaa, ja jos muutetaan, sen tulee aina olla merkkijonoliteraali eikä ekspressio."
# options.rpy:146
old "## Icon ########################################################################'"
new "## Icon ########################################################################'"
new "## Ikoni #######################################################################'"
# options.rpy:148
old "## The icon displayed on the taskbar or dock."
new "## The icon displayed on the taskbar or dock."
new "## Tehtäväpalkissa tai työpöydällä näkyvä ikoni."
# options.rpy:153
old "## Build configuration"
new "## Build configuration"
new "## Jakeluasetukset"
# options.rpy:155
old "## This section controls how Ren'Py turns your project into distribution files."
new "## This section controls how Ren'Py turns your project into distribution files."
new "## Tämä osio ohjaa Ren'Py:n käyttäytymistä pelin jakeluiden kokoamisvaiheessa."
# options.rpy:160
old "## The following functions take file patterns. File patterns are case- insensitive, and matched against the path relative to the base directory, with and without a leading /. If multiple patterns match, the first is used."
new "## 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 "## Seuraavat funktiot vaativat tiedostonimimallin. Mallit ovat kirjasinkokoriippumattomia, ja niitä verrataan projektikansiosta riippuvaisina, joko alkavan /-merkin kanssa tai ilman. Jos useampi malli täsmää, käytetään ensimmäistä sopivaa."
# options.rpy:165
old "## In a pattern:"
new "## In a pattern:"
new "## Mallin syntaksi:"
# options.rpy:167
old "## / is the directory separator."
new "## / is the directory separator."
new "## / on kansioiden erotin."
# options.rpy:169
old "## * matches all characters, except the directory separator."
new "## * matches all characters, except the directory separator."
new "## * täsmää kaikkiin merkkeihin, paitsi kansion erottimeen."
# options.rpy:171
old "## ** matches all characters, including the directory separator."
new "## ** matches all characters, including the directory separator."
new "## ** täsmää kaikkiin merkkeihin, mukaan lukien kansion erottimeen."
# options.rpy:173
old "## For example, \"*.txt\" matches txt files in the base directory, \"game/**.ogg\" matches ogg files in the game directory or any of its subdirectories, and \"**.psd\" matches psd files anywhere in the project."
new "## 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 "## Esimerkiksi, \"*.txt\" täsmää kaikkiin txt-tiedostoihin projektikansiossa, \"game/**.ogg\" täsmää kaikkiin ogg-tiedostoihin game-kansiossa tai sen alakansioissa, ja \"**.psd\" täsmää kaikkiin, missä tahansa projektissa sijaitseviin psd-tiedostoihin."
# options.rpy:177
old "## Classify files as None to exclude them from the built distributions."
new "## Classify files as None to exclude them from the built distributions."
new "## Luokittele tiedostot arvolla None jättääksesi ne pois kootuista jakeluista."
# options.rpy:185
old "## To archive files, classify them as 'archive'."
new "## To archive files, classify them as 'archive'."
new "## Arkistoidaksesi tiedostoja, luokittele ne arvolla 'archive'."
# options.rpy:190
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## Dokumentaatiotiedostot kloonautuvat mac-sovelluksissa, joten ne sisältyvät sekä sovelluksessa että zip-tiedostossa."
# options.rpy:196
old "## A Google Play license key is required to download expansion files and perform in-app purchases. It can be found on the \"Services & APIs\" page of the Google Play developer console."
new "## 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 -lisenssiavain vaaditaan jotta lisäosatiedostoja ja sovelluksen sisäisiä ostoja voidaan tukea. Sen voi löytää \"Services & APIs\"-sivulta Google Play -kehittäjäkonsolista."
# options.rpy:203
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## The username and project name associated with an itch.ioproject, separated by a slash."
new "## Kauttaviivan erottama käyttäjänimi ja itch.io-projektinimi."
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 "## 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 whoparameter can be None if no name is given.)"
new "## Tulostenäyttöä käytetään dialogin näyttämiseen pelaajalle. Se ottaa kaksi parametriä, who ja what, jotka ovat puhuvan hahmon nimi sekä näytettävä teksti. (who-parametri voi olla None, jos nimeä ei anneta.)"
# screens.rpy:98
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 "## 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 "## Tämän näytön on luotava tekstiesittäjä käyttäen komentoa id \"what\", sillä Ren'Py käyttää tätä tekstin näytön käsittelyssä. Se voi myös luoda grafiikkaa käyttäen komentoja id \"who\" ja id \"window\" tyyliominaisuuksien lisäämiseksi."
# screens.rpy:102
old "## https://www.renpy.org/doc/html/screen_special.html#say"
@@ -27,15 +27,15 @@ translate finnish strings:
# screens.rpy:169
old "## Input screen"
new "## Input screen"
new "## Syötenäyttö"
# screens.rpy:171
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
new "## This screen is used to display renpy.input. The promptparameter is used to pass a text prompt in."
new "## Tätä näyttöä käytetään renpy.input:in renderöinnissä. prompt-parametri antaa kehotetekstin."
# screens.rpy:174
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
new "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
new "## Tämän näytön tulee luoda syöttöikkuna käyttäen komentoa id \"input\" voidakseen hyväksyä erilaisia syöteparametrejä."
# screens.rpy:177
old "## http://www.renpy.org/doc/html/screen_special.html#input"
@@ -43,11 +43,11 @@ translate finnish strings:
# screens.rpy:205
old "## Choice screen"
new "## Choice screen"
new "## Valintanäyttö"
# screens.rpy:207
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 "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, isa list of objects, each with caption and action fields."
new "## Tätä näyttöä käytetään esittämään pelinsisäiset menu-lauseen esittämät valinnat. Sen ainoa parametri, items, on lista olioista, joiista jokaisessa on kentät otsikolle ja toiminnolle."
# screens.rpy:211
old "## http://www.renpy.org/doc/html/screen_special.html#choice"
@@ -55,15 +55,15 @@ translate finnish strings:
# screens.rpy:221
old "## When this is true, menu captions will be spoken by the narrator. When false, menu captions will be displayed as empty buttons."
new "## When this is true, menu captions will be spoken by the narrator. When false, menu captions will be displayed as empty buttons."
new "## Tämän ollessa tosi, kertoja puhuu valinnat ääneen. Ja kun epätosi, vaihtoehdot näytetään tyhjinä painikkeina."
# screens.rpy:244
old "## Quick Menu screen"
new "## Quick Menu screen"
new "## Pikavalikkonäyttö"
# screens.rpy:246
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
new "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
new "## Pikavalikko näytetään pelin aikana, tarjoten helpon pääsyn pelin ulkoisiin valikkoihin."
# screens.rpy:261
old "Back"
@@ -71,7 +71,7 @@ translate finnish strings:
# screens.rpy:262
old "History"
new "History"
new "Historia"
# screens.rpy:263
old "Skip"
@@ -83,51 +83,51 @@ translate finnish strings:
# screens.rpy:265
old "Save"
new "Save"
new "Tallenna"
# screens.rpy:266
old "Q.Save"
new "Q.Save"
new "P.Tallenna"
# screens.rpy:267
old "Q.Load"
new "Q.Load"
new "P.Lataa"
# screens.rpy:268
old "Prefs"
new "Prefs"
new "Asetukset"
# screens.rpy:271
old "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
new "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
new "## Tämä koodi varmistaa, että quick_menu-näyttö näytetään pelin aikana, aina kun pelaaja ei ole erikseen sitä piilottanut."
# screens.rpy:291
old "## Navigation screen"
new "## Navigation screen"
new "## Siirtymänäyttö"
# screens.rpy:293
old "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
new "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
new "## Tämä näyttö sisältyy pää- ja pelivalikkoon, tarjoten pääsyn muihin valikoihin, sekä pelin aloitukseen."
# screens.rpy:308
old "Start"
new "Start"
new "Aloita"
# screens.rpy:316
old "Load"
new "Load"
new "Lataa"
# screens.rpy:318
old "Preferences"
new "Preferences"
new "Asetukset"
# screens.rpy:322
old "End Replay"
new "End Replay"
new "Päätä Toisto"
# screens.rpy:326
old "Main Menu"
new "Main Menu"
new "Päävalikko"
# screens.rpy:328
old "About"
@@ -135,15 +135,15 @@ translate finnish strings:
# screens.rpy:332
old "## Help isn't necessary or relevant to mobile devices."
new "## Help isn't necessary or relevant to mobile devices."
new "## Ohje ei ole tarpeellinen tai oleellinen mobiililaitteilla."
# screens.rpy:333
old "Help"
new "Help"
new "Ohje"
# screens.rpy:335
old "## The quit button is banned on iOS and unnecessary on Android."
new "## The quit button is banned on iOS and unnecessary on Android."
new "## Poistu-painike on kielletty iOS-laitteilla, ja tarpeeton Android-laitteilla."
# screens.rpy:336
old "Quit"
@@ -151,11 +151,11 @@ translate finnish strings:
# screens.rpy:350
old "## Main Menu screen"
new "## Main Menu screen"
new "## Päävalikkonäkymä"
# screens.rpy:352
old "## Used to display the main menu when Ren'Py starts."
new "## Used to display the main menu when Ren'Py starts."
new "## Käytetään päävalikon näyttämiseksi Ren'Py:n käynnistyessä."
# screens.rpy:354
old "## http://www.renpy.org/doc/html/screen_special.html#main-menu"
@@ -163,19 +163,19 @@ translate finnish strings:
# screens.rpy:369
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
new "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
new "## use-komento sisältää toisen näytön. Päävalikon sisältö on todellisuudessa osa siirtymänäyttöä."
# screens.rpy:413
old "## Game Menu screen"
new "## Game Menu screen"
new "## Pelivalikkonäkymä"
# screens.rpy:415
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 "## 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 "## Tämä esittää pelivalikon perusrakenteen. Sitä kutsutaan näytön nimellä, ja se näyttää taustakuvan, nimen, sekä siirtymävalinnat."
# screens.rpy:418
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 "## The scrollparameter 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-parametri voi olla None, tai vaihtoisesti \"viewport\" tai \"vpgrid\". Tämän näytön sisältäessä yhden tai useamman muun näytön, jotka sijoitetaan sen sisään."
# screens.rpy:476
old "Return"
@@ -183,43 +183,43 @@ translate finnish strings:
# screens.rpy:539
old "## About screen"
new "## About screen"
new "## Tietoja-näyttö"
# screens.rpy:541
old "## This screen gives credit and copyright information about the game and Ren'Py."
new "## This screen gives credit and copyright information about the game and Ren'Py."
new "## Tämä näyttö antaa kehuja kehittäjille, sekä kopio-oikeusinformaatiota pelistä sekä Ren'Py:stä."
# screens.rpy:544
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
new "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
new "## Tässä näytössä ei ole mitään erityistä, minkä vuoksi se toimii hyvin esimerkkinä itse tehdystä näytöstä."
# screens.rpy:551
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 "## 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 "## Tämä use-lause sisältää game_menu-näytön. Sen alainen vbox-ikkuna sisältyy täten näkymään game_menu-näytön kautta."
# screens.rpy:561
old "Version [config.version!t]\n"
new "Version [config.version!t]\n"
new "Versio [config.version!t]\n"
# screens.rpy:563
old "## gui.about is usually set in options.rpy."
new "## gui.about is usually set in options.rpy."
new "## gui.about asetetaan yleensä tiedostossa options.rpy."
# screens.rpy:567
old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
new "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
new "Kehitetty käyttäen ohjelmaa {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
# screens.rpy:570
old "## This is redefined in options.rpy to add text to the about screen."
new "## This is redefined in options.rpy to add text to the about screen."
new "## Tämä on määritelty uudelleen options.rpy-tiedostossa tekstin lisäämiseksi tietoja-näyttöön."
# screens.rpy:582
old "## Load and Save screens"
new "## Load and Save screens"
new "## Lataa ja Tallenna -näytöt"
# screens.rpy:584
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 "## 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 "## Nämä näytöt mahdollistavat pelaajan tallentaa pelin edistys ja ladata olemassaolevia tallennuksia. Koska näillä on niin paljon yhteistä, molemmat näytöt on määritelty kolmannen näytön, file_slots, mukaan."
# screens.rpy:588
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
@@ -239,11 +239,11 @@ translate finnish strings:
# screens.rpy:613
old "## This ensures the input will get the enter event before any of the buttons do."
new "## This ensures the input will get the enter event before any of the buttons do."
new "## Tämä varmistaa, että input saa enter-tapahtuman ennen muita painikkeita."
# screens.rpy:629
old "## The grid of file slots."
new "## The grid of file slots."
new "## Tallennuspaikkojen taulukko."
# screens.rpy:649
old "{#file_time}%A, %B %d %Y, %H:%M"
@@ -251,11 +251,11 @@ translate finnish strings:
# screens.rpy:649
old "empty slot"
new "empty slot"
new "tyhjä paikka"
# screens.rpy:657
old "## Buttons to access other pages."
new "## Buttons to access other pages."
new "## Painikkeita muille sivuille pääsyä varten."
# screens.rpy:666
old "<"
@@ -275,11 +275,11 @@ translate finnish strings:
# screens.rpy:711
old "## Preferences screen"
new "## Preferences screen"
new "## Asetukset-näyttö"
# screens.rpy:713
old "## The preferences screen allows the player to configure the game to better suit themselves."
new "## The preferences screen allows the player to configure the game to better suit themselves."
new "## Asetukset antavat pelaajan säätää pelin grafiikka, toiminnot sekä äänet mieleisekseen."
# screens.rpy:716
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
@@ -299,7 +299,7 @@ translate finnish strings:
# screens.rpy:744
old "Rollback Side"
new "Rollback Side"
new "Palautussivu"
# screens.rpy:745
old "Disable"
@@ -307,63 +307,63 @@ translate finnish strings:
# screens.rpy:746
old "Left"
new "Left"
new "Vasen"
# screens.rpy:747
old "Right"
new "Right"
new "Oikea"
# screens.rpy:752
old "Unseen Text"
new "Unseen Text"
new "Lukematon Teksti"
# screens.rpy:753
old "After Choices"
new "After Choices"
new "Päätösten Jälkeen"
# screens.rpy:754
old "Transitions"
new "Transitions"
new "Siirtymät"
# screens.rpy:756
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
new "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
new "## Ylimääräisiä tyyppien \"radio_pref\" tai \"check_pref\" vboxeja voidaan lisätä tähän, antaen pelaajalle ylimääräisiä kehittäjän luomia asetuksia."
# screens.rpy:767
old "Text Speed"
new "Text Speed"
new "Tekstin Nopeus"
# screens.rpy:771
old "Auto-Forward Time"
new "Auto-Forward Time"
new "Automaattisen Jatkamisen Viive"
# screens.rpy:778
old "Music Volume"
new "Music Volume"
new "Musiikin Äänenvoimakkuus"
# screens.rpy:785
old "Sound Volume"
new "Äänenvoimakkuus"
new "Ääniefektien Äänenvoimakkuus"
# screens.rpy:791
old "Test"
new "Test"
new "Kokeile"
# screens.rpy:795
old "Voice Volume"
new "Voice Volume"
new "Puheen Äänenvoimakkuus"
# screens.rpy:806
old "Mute All"
new "Mute All"
new "Mykistä Kaikki"
# screens.rpy:882
old "## History screen"
new "## History screen"
new "## Historia-näyttö"
# screens.rpy:884
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 "## 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 "## Tämä näyttö näyttää dialogihistorian pelaajalle. Vaikka kyseisessä näytössä ei ole mitään erityistä, sillä on pääsy _history_list:iin tallennettuun dialogihistoriaan."
# screens.rpy:888
old "## https://www.renpy.org/doc/html/history.html"
@@ -371,35 +371,35 @@ translate finnish strings:
# screens.rpy:894
old "## Avoid predicting this screen, as it can be very large."
new "## Avoid predicting this screen, as it can be very large."
new "## Vältä ennustamasta tätä näyttöä, sillä se voi olla hyvin suuri."
# screens.rpy:905
old "## This lays things out properly if history_height is None."
new "## This lays things out properly if history_height is None."
new "## Tämä asettelee dialogin kunnnolla, jos history_height on None."
# screens.rpy:914
old "## Take the color of the who text from the Character, if set."
new "## Take the color of the whotext from the Character, if set."
new "## Ota väri hahmon who-tekstistä, jos asetettu."
# screens.rpy:921
old "The dialogue history is empty."
new "The dialogue history is empty."
new "Dialogihistoria on tyhjä."
# screens.rpy:965
old "## Help screen"
new "## Help screen"
new "## Ohje-näyttö"
# screens.rpy:967
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 "## 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 "## Näyttö, joka tarjoaa tietoa pelin käyttämistä hiiren ja näppäimistön painikkeista sekä niiden toiminnoista. Se käyttää muita näyttöjä (keyboard_help, mouse_help, ja gamepad_help) näyttääkseen itse ohjeet."
# screens.rpy:986
old "Keyboard"
new "Keyboard"
new "Näppäimistö"
# screens.rpy:987
old "Mouse"
new "Mouse"
new "Hiiri"
# screens.rpy:990
old "Gamepad"
@@ -411,31 +411,31 @@ translate finnish strings:
# screens.rpy:1004
old "Advances dialogue and activates the interface."
new "Advances dialogue and activates the interface."
new "Jatkaa dialogia ja aktivoi valittuja toimintoja."
# screens.rpy:1007
old "Space"
new "Space"
new "Välilyönti"
# screens.rpy:1008
old "Advances dialogue without selecting choices."
new "Advances dialogue without selecting choices."
new "Jatkaa dialogia tekemättä päätöksiä."
# screens.rpy:1011
old "Arrow Keys"
new "Arrow Keys"
new "Nuolinäppäimet"
# screens.rpy:1012
old "Navigate the interface."
new "Navigate the interface."
new "Liiku käyttöliittymässä."
# screens.rpy:1015
old "Escape"
new "Escape"
new "Esc"
# screens.rpy:1016
old "Accesses the game menu."
new "Accesses the game menu."
new "Avaa ja sulkee pelivalikon."
# screens.rpy:1019
old "Ctrl"
@@ -443,15 +443,15 @@ translate finnish strings:
# screens.rpy:1020
old "Skips dialogue while held down."
new "Skips dialogue while held down."
new "Sivuuttaa dialogin pidettäessä painettuna."
# screens.rpy:1023
old "Tab"
new "Tab"
new "Sarkain"
# screens.rpy:1024
old "Toggles dialogue skipping."
new "Toggles dialogue skipping."
new "Asettaa dialogin sivuutuksen päälle ja pois."
# screens.rpy:1027
old "Page Up"
@@ -459,83 +459,83 @@ translate finnish strings:
# screens.rpy:1028
old "Rolls back to earlier dialogue."
new "Rolls back to earlier dialogue."
new "Siirtyy takaisin aiempaan dialogiin."
# screens.rpy:1031
old "Page Down"
new "Page Down"
new "Siirtyy uudempaan dialogiin."
# screens.rpy:1032
old "Rolls forward to later dialogue."
new "Rolls forward to later dialogue."
new "Vierittää kohti uudempaa dialogia."
# screens.rpy:1036
old "Hides the user interface."
new "Hides the user interface."
new "Piilottaa käyttöliittymän."
# screens.rpy:1040
old "Takes a screenshot."
new "Takes a screenshot."
new "Ottaa näytönkaappauksen."
# screens.rpy:1044
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
new "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
new "Asettaa auttavan {a=https://www.renpy.org/l/voicing}TTS-tilan{/a} päälle ja pois."
# screens.rpy:1050
old "Left Click"
new "Left Click"
new "Hiiren Vasen Painike"
# screens.rpy:1054
old "Middle Click"
new "Middle Click"
new "Hiiren Keskipainike"
# screens.rpy:1058
old "Right Click"
new "Right Click"
new "Hiiren Oikea Painike"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
new "Mouse Wheel Up\nClick Rollback Side"
new "Hiiren Rulla Ylös\nKlikkaa Palautussivua"
# screens.rpy:1066
old "Mouse Wheel Down"
new "Mouse Wheel Down"
new "Hiiren Rulla Alas"
# screens.rpy:1073
old "Right Trigger\nA/Bottom Button"
new "Right Trigger\nA/Bottom Button"
new "Oikea Liipaisin\nA/Alapainike"
# screens.rpy:1074
old "Advance dialogue and activates the interface."
new "Advance dialogue and activates the interface."
new "Jatka dialogia ja aktivoi valittuja toimintoja."
# screens.rpy:1078
old "Roll back to earlier dialogue."
new "Roll back to earlier dialogue."
new "Siirtyy takaisin aiempaan dialogiin."
# screens.rpy:1081
old "Right Shoulder"
new "Right Shoulder"
new "Oikea Olkapainike"
# screens.rpy:1082
old "Roll forward to later dialogue."
new "Roll forward to later dialogue."
new "Vieritä kohti uudempaa dialogia."
# screens.rpy:1085
old "D-Pad, Sticks"
new "D-Pad, Sticks"
new "Ristiohjain, Tikut"
# screens.rpy:1089
old "Start, Guide"
new "Start, Guide"
new "Start, Opas"
# screens.rpy:1090
old "Access the game menu."
new "Access the game menu."
new "Avaa ja sulje pelivalikko."
# screens.rpy:1093
old "Y/Top Button"
new "Y/Top Button"
new "Y/Yläpainike"
# screens.rpy:1096
old "Calibrate"
@@ -543,15 +543,15 @@ translate finnish strings:
# screens.rpy:1124
old "## Additional screens"
new "## Additional screens"
new "## Ylimääräisiä näyttöjä"
# screens.rpy:1128
old "## Confirm screen"
new "## Confirm screen"
new "## Vahvistusikkuna"
# screens.rpy:1130
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## Vahvistusikkunaa käytetään, kun Ren'Py haluaa kysyä pelaajalta kyllä tai ei -kysymyksen."
# screens.rpy:1133
old "## http://www.renpy.org/doc/html/screen_special.html#confirm"
@@ -559,7 +559,7 @@ translate finnish strings:
# screens.rpy:1137
old "## Ensure other screens do not get input while this screen is displayed."
new "## Ensure other screens do not get input while this screen is displayed."
new "## Varmista, etteivät muut näytöt odota syötettä tämän näytön ollessa näkyvillä."
# screens.rpy:1161
old "Yes"
@@ -571,15 +571,15 @@ translate finnish strings:
# screens.rpy:1164
old "## Right-click and escape answer \"no\"."
new "## Right-click and escape answer \"no\"."
new "## Hiiren oikea painike ja Esc antavat vastauksen \"ei\"."
# screens.rpy:1191
old "## Skip indicator screen"
new "## Skip indicator screen"
new "## Sivuutusilmaisin-näyttö"
# screens.rpy:1193
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## skip_indicator-näyttö on näkyvillä, kun dialogin sivuutuksen tila on käytössä."
# screens.rpy:1196
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
@@ -587,19 +587,19 @@ translate finnish strings:
# screens.rpy:1208
old "Skipping"
new "Skipping"
new "Sivuutetaan dialogia"
# screens.rpy:1215
old "## This transform is used to blink the arrows one after another."
new "## This transform is used to blink the arrows one after another."
new "## Tätä muutosta käytetään nuolten vilkkumiseen toistensa perään."
# screens.rpy:1247
old "## Notify screen"
new "## Notify screen"
new "## Ilmoitusnäyttö"
# screens.rpy:1249
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 "## 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 "## Ilmoitusnäyttöä käytetään näyttämään pelaajalle viesti. (Esimerkiksi kun peli on pikatallennettu tai näytönkaappaus on otettu.)"
# screens.rpy:1252
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
@@ -607,11 +607,11 @@ translate finnish strings:
# screens.rpy:1286
old "## NVL screen"
new "## NVL screen"
new "## NVL-näyttö"
# screens.rpy:1288
old "## This screen is used for NVL-mode dialogue and menus."
new "## This screen is used for NVL-mode dialogue and menus."
new "## Tätä näyttöä käytetään NVL-tilan dialogiin ja valikoihin."
# screens.rpy:1290
old "## http://www.renpy.org/doc/html/screen_special.html#nvl"
@@ -619,25 +619,25 @@ translate finnish strings:
# screens.rpy:1301
old "## Displays dialogue in either a vpgrid or the vbox."
new "## Displays dialogue in either a vpgrid or the vbox."
new "## Näyttää dialogin joko vpgridissä tai vboxissa."
# screens.rpy:1314
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 "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True, as it is above."
new "## Näyttää valikon, jos annettu. Valikko voi näyttää väärältä mikäli config.narrator_menu on asetettu arvoon True, kuten yllä."
# screens.rpy:1344
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
new "## This controls the maximum number of NVL-mode entries that can be displayed at once."
new "## Tämä säätää, kuinka mointa NVL-tilan viestiä voidaan maksimissaan näyttää kerralla."
# screens.rpy:1406
old "## Mobile Variants"
new "## Mobile Variants"
new "## Mobiiliversiot"
# screens.rpy:1413
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 "## 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 "## Koska hiirtä ei välttämättä ole, korvaamme pikavalikon versiolla jossa on vähemmän, ja suurempia painikkeita, joita on helpompi koskea."
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
@@ -785,3 +785,115 @@ translate french strings:
# renpy/common/00preferences.rpy:493
old "high contrast text"
new "texte en contraste élevé"
# renpy/common/00preferences.rpy:511
old "audio when minimized"
new "audio quand minimisé"
# renpy/common/00preferences.rpy:531
old "main volume"
new "volume principal"
# renpy/common/00preferences.rpy:535
old "mute main"
new "sourdine générale"
# renpy/common/00speechbubble.rpy:299
old "Speech Bubble Editor"
new "Éditeur de bulles de dialogue"
# renpy/common/00speechbubble.rpy:304
old "(hide)"
new "(masquer)"
# renpy/common/00director.rpy:1748
old "Click to toggle attribute, right click to toggle negative attribute."
new "Clic pour (dés)activer des attributs, clic droit pour (dés)activer les suppressions d'attributs."
# renpy/common/00director.rpy:1771
old "Click to set transform, right click to add to transform list."
new "Clic pour ajouter un transform, clic droit pour ajouter une liste de transforms."
# renpy/common/00preferences.rpy:528
old "audio when unfocused"
new "audio lors de la perte de focus"
# renpy/common/00preferences.rpy:537
old "web cache preload"
new "préchargement du cache web cache"
# renpy/common/00preferences.rpy:552
old "voice after game menu"
new "voix dans le menu de jeu"
# renpy/common/00sync.rpy:58
old "Sync downloaded."
new "Sync téléchargé."
# renpy/common/00sync.rpy:178
old "Could not connect to the Ren'Py Sync server."
new "Échec de la connexion au serveur Ren'Py Sync."
# renpy/common/00sync.rpy:180
old "The Ren'Py Sync server timed out."
new "Le serveur Ren'Py Sync a mis trop de temps à répondre."
# renpy/common/00sync.rpy:182
old "An unknown error occurred while connecting to the Ren'Py Sync server."
new "Une erreur inconnue est arrivée lors de la connexion au serveur Ren'Py Sync."
# renpy/common/00sync.rpy:255
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
new "Le serveur Ren'Py Sync ne reconnaît pas ce code sync. l'ID est peut-être invalide, ou il peut avoir expiré."
# renpy/common/00sync.rpy:397
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
new "Entrez l'ID sync que vous avez généré.\nN'entrez jamais un ID sync que vous n'avez pas généré vous-même."
# renpy/common/00sync.rpy:416
old "The sync ID is not in the correct format."
new "L'ID sync n'est pas dans un format correct."
# renpy/common/00sync.rpy:436
old "The sync could not be decrypted."
new "Le sync n'a pas pu être déchiffré."
# renpy/common/00sync.rpy:459
old "The sync belongs to a different game."
new "Le sync correspond à un autre jeu."
# renpy/common/00sync.rpy:464
old "The sync contains a file with an invalid name."
new "Le sync contient un fichier ayant un nom invalide."
# renpy/common/00sync.rpy:517
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
new "Vos sauvegardes vont être téléchargées sur le {a=https://sync.renpy.org}serveur Ren'Py Sync{/a}.\nVoulez-vous continuer ?"
# renpy/common/00sync.rpy:546
old "Enter Sync ID"
new "Entrez l'ID Sync"
# renpy/common/00sync.rpy:557
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
new "Ceci va contacter le {a=https://sync.renpy.org}serveur Ren'Py Sync{/a}."
# renpy/common/00sync.rpy:584
old "Sync Success"
new "Sync réussi"
# renpy/common/00sync.rpy:587
old "The Sync ID is:"
new "L'ID Sync est :"
# renpy/common/00sync.rpy:593
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
new "Vous pouvez utiliser cet ID pour transférer votre sauvegarde sur un autre appareil.\nCe sync expirera dans une heure.\nRen'Py Sync is soutenu par les {a=https://www.renpy.org/sponsors.html}Sponsors de Ren'Py's{/a}."
new " (Aucune propriété ne s'applique au displayable)"
# _developer/inspector.rpym:147
old " (default properties omitted)"
@@ -114,7 +118,7 @@
# 00console.rpy:182
old "Press <esc> to exit console. Type help for help.\n"
new "Pressez « Echap » pour quitter la console. Pressez « Aide » pour afficher l’aide.\n"
new "Appuyez sur Échap pour quitter la console. Écrivez help pour afficher l’aide.\n"
# 00console.rpy:186
old "Ren'Py script enabled."
@@ -124,9 +128,13 @@
old "Ren'Py script disabled."
new "Script Ren'Py désactivé."
# 00console.rpy:398
old "help: show this help"
new "aide: Afficher cette aide"
# renpy/common/00console.rpy:781
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
new "help : afficher cette aide\n help <expr>: afficher la signature et la documentation de <expr>"
# renpy/common/00console.rpy:805
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
new "Help peut afficher des fonctions non documentées. Veuillez vérifier que la\nfonction ou classe que vous voulez utiliser est bien documentée.\n\n"
# 00console.rpy:403
old "commands:\n"
@@ -134,15 +142,15 @@
# 00console.rpy:413
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 " <expression ou instruction python> : exécuter cette expression ou cette instruction"
# 00console.rpy:423
old "clear: clear the console history"
new "clear: Purger l’historique de la console"
new "clear: effacer l’historique de la console"
# 00console.rpy:427
old "exit: exit the console"
@@ -158,7 +166,7 @@
# 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"
@@ -178,7 +186,7 @@
# 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"
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)."
@@ -195,3 +203,7 @@
# 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 "This computer has a problem displaying graphics: [problem]."
new "Cet ordinateur rencontre un problème pour afficher les graphismes: [problem]."
new "Cet ordinateur rencontre un problème pour afficher les graphismes: [problem]."
# 00gltest.rpy:157
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 "{font=fonts/Roboto-Light.ttf}Français{/font}"
# about.rpy:39
old "[version!q]"
@@ -106,7 +109,7 @@
# android.rpy:304
old "Android: [project.current.name!q]"
new "Android: [project.current.name!q]"
new "Android: [project.current.name!q]"
# android.rpy:324
old "Emulation:"
@@ -306,7 +309,7 @@
# distribute_gui.rpy:194
old "Add from clauses to calls, once"
new "Add from clauses to calls, once"
new "Ajouter des \"from\" aux \"call\""
# distribute_gui.rpy:195
old "Refresh"
@@ -314,7 +317,7 @@
# distribute_gui.rpy:199
old "Upload to itch.io"
new "Télécharger (upload) sur itch.io"
new "Uploader sur itch.io"
# distribute_gui.rpy:215
old "Build Packages:"
@@ -330,7 +333,7 @@
# distribute_gui.rpy:241
old "Add from clauses to calls"
new "Add from clauses to calls"
new "Ajouter des \"from\" aux \"call\""
# distribute_gui.rpy:242
old "Force Recompile"
@@ -342,7 +345,7 @@
# distribute_gui.rpy:250
old "Adding from clauses to call statements that do not have them."
new "Adding from clauses to call statements that do not have them."
new "Ajout de \"from\" aux \"call\" qui n'en ont pas."
# distribute_gui.rpy:271
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
@@ -410,7 +413,7 @@
# front_page.rpy:93
old "refresh"
new "rafraichir"
new "rafraîchir"
# front_page.rpy:120
old "+ Create New Project"
@@ -470,7 +473,7 @@
# front_page.rpy:223
old "Navigate Script"
new "Naviguer dans le script"
new "Parcourir le script"
# front_page.rpy:234
old "Check Script (Lint)"
@@ -561,8 +564,8 @@
new "Le projet [project_name!q] existe déjà. Choisissez un nom de projet différent."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "Quelle résolution souhaitez-vous utiliser pour votre projet? Même si Ren’Py peut agrandir ou diminuer les fenêtres et leurs images à l’échelle, il s’agit là de l’échelle initiale, la taille à laquelle les composants doivent être dessinés et la taille de fenêtre pour lesquelles ils seront le plus précis.\n\nThe La valeur par défaut (1280x720) semble être un compromis raisonnable."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "Quelle résolution souhaitez-vous utiliser pour votre projet? Même si Ren’Py peut agrandir ou diminuer les fenêtres et leurs images à l’échelle, il s’agit là de l’échelle initiale, la taille à laquelle les composants doivent être dessinés et la taille de fenêtre pour lesquelles ils seront le plus précis.\n\nThe La valeur par défaut ([default_size[0]]x[default_size[1]]) semble être un compromis raisonnable."
# gui7.rpy:389
old "Creating the new project..."
@@ -654,11 +657,11 @@
# ios.rpy:33
old "Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down."
new "Tentatives pour émuler un iPhone.\n\nLe contact tactile est émulé via la souris, mais seulement si le bouton est maintenu pressé."
new "Tentative d'émuler un iPhone.\n\nLe contact tactile est émulé via la souris, mais seulement si le bouton est maintenu pressé."
# ios.rpy:34
old "Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down."
new "Tentatives pour émuler un iPad.\n\nLe contact tactile est émulé via la souris, mais seulement si le bouton est maintenu pressé."
new "Tentative d'émuler un iPad.\n\nLe contact tactile est émulé via la souris, mais seulement si le bouton est maintenu pressé."
# ios.rpy:36
old "Selects the directory where Xcode projects will be placed."
@@ -686,7 +689,7 @@
# ios.rpy:211
old "iOS: [project.current.name!q]"
new "iOS: [project.current.name!q]"
new "iOS: [project.current.name!q]"
# ios.rpy:240
old "iPhone"
@@ -742,7 +745,7 @@
# itch.rpy:99
old "The butler program was not found."
new "Le programme coordonnateur(butler) n'a pas été trouvé."
new "Le programme butler n'a pas été trouvé."
# itch.rpy:99
old "Please install the itch.io app, which includes butler, and try again."
@@ -886,7 +889,7 @@
# preferences.rpy:111
old "Text Editor:"
new "Éditeur:"
new "Éditeur de texte:"
# preferences.rpy:117
old "Text editor: [text]"
@@ -894,7 +897,7 @@
# preferences.rpy:133
old "Update Channel:"
new "Version"
new "Type de version :"
# preferences.rpy:153
old "Navigation Options:"
@@ -922,7 +925,7 @@
# preferences.rpy:174
old "Show edit file section"
new "Afficher la section d’édition de fichier"
new "Afficher la section d’édition de fichiers"
# preferences.rpy:175
old "Large fonts"
@@ -930,11 +933,11 @@
# preferences.rpy:178
old "Console output"
new "Sortie console"
new "Console de sortie"
# preferences.rpy:199
old "Open launcher project"
new "Ouvrir le projet lanceur"
new "Ouvrir le projet du lanceur"
# preferences.rpy:213
old "Language:"
@@ -994,7 +997,7 @@
# translations.rpy:104
old "The language to work with. This should only contain lower-case ASCII characters and underscores."
new "Le langage avec lequel travailler. Cette valeur ne doit contenir que des caractères ASCII en minuscules et des underscores (tiret bas)."
new "Le langage avec lequel travailler. Cette valeur ne doit contenir que des caractères ASCII en minuscules et des underscores."
# translations.rpy:130
old "Generate empty strings for translations"
@@ -1022,7 +1025,7 @@
# translations.rpy:180
old "Update Default Interface Translations"
new "Met à jour la traduction de l'interface par défaut"
new "Mise à jour de la traduction par défaut de l'interface"
# 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."
@@ -1054,11 +1057,11 @@
# translations.rpy:282
old "Updating default interface translations..."
new "Mise à jour en cours de la traduction de l’interface par défaut..."
new "Mise à jour de la traduction par défaut de l’interface en cours..."
# translations.rpy:306
old "Extract Dialogue: [project.current.name!q]"
new "Extraire le dialogue: [project.current.name!q]"
new "Extraire les dialogues: [project.current.name!q]"
# translations.rpy:322
old "Format:"
@@ -1066,7 +1069,7 @@
# translations.rpy:330
old "Tab-delimited Spreadsheet (dialogue.tab)"
new "Feuille de calcul avec pour séparateur des tabulations (dialogue.tab)"
new "Feuille de calcul avec des tabulations comme séparateur (dialogue.tab)"
# translations.rpy:331
old "Dialogue Text Only (dialogue.txt)"
@@ -1074,11 +1077,11 @@
# translations.rpy:344
old "Strip text tags from the dialogue."
new "Retire les tags (balises) des dialogues."
new "Retire les text tags (balises) des dialogues."
# translations.rpy:345
old "Escape quotes and other special characters."
new "Protège (escape) les apostrophes et les autres caractères spéciaux."
new "Protège (échappe) les apostrophes et les autres caractères spéciaux."
# translations.rpy:346
old "Extract all translatable strings, not just dialogue."
@@ -1098,11 +1101,11 @@
# updater.rpy:86
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Le canal de mise à jour détermine la version de Ren’Py qui sera téléchargée. S’il vous plaît, sélectionnez un canal de mise à jour:"
new "Le canal de mise à jour détermine la version de Ren’Py qui sera téléchargée. Sélectionnez un canal de mise à jour:"
# updater.rpy:91
old "Release"
new "Version actuelle."
new "Stable"
# updater.rpy:97
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
@@ -1110,7 +1113,7 @@
# updater.rpy:102
old "Prerelease"
new "Version de test"
new "Pré-stable"
# 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."
@@ -1194,11 +1197,11 @@
# 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."
new "Selectionne le build de Debug, qui peut être atteint depuis Android Studio. Passer d'un build debug à un build stable 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."
new "Sélectionne le build Stable, qui peut être posté sur des magasins d'applications. Passer d'un build debug à un build stable nécessitera une désinstallation sur votre appareil."
# game/android.rpy:313
old "Android: [project.current.display_name!q]"
@@ -1274,7 +1277,7 @@
# 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."
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."
@@ -1590,7 +1593,7 @@
# game/install.rpy:110
old "Install Libraries"
new "Installer les Bibliothèques"
new "Installer des 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."
@@ -1610,7 +1613,7 @@
# game/install.rpy:151
old "Install Steam Support"
new "Installer le upport Steam"
new "Installer le support Steam"
# game/install.rpy:160
old "Before installing Steam support, please make sure you are a {a=https://partner.steamgames.com/}Steam partner{/a}."
@@ -1626,7 +1629,7 @@
# game/interface.rpy:136
old "Ren'Py Sponsor Information"
new "Information sur les sponsors de Ren'Py Sponsor"
new "Informations sur les sponsors de Ren'Py"
# game/interface.rpy:372
old "opening the log file"
@@ -1654,7 +1657,7 @@
# game/preferences.rpy:145
old "Reset window size"
new "Réinisialiser la taille de la fenêtre"
new "Réinitialiser la taille de la fenêtre"
# game/preferences.rpy:188
old "Force new tutorial"
@@ -1871,3 +1874,215 @@
# game/preferences.rpy:206
old "Daily check for update"
new "Vérification quotidienne des mises à jour"
# game/android.rpy:55
old "Lists the connected devices."
new "Liste les appareils connectés."
# game/android.rpy:58
old "Disconnects a device connected over Wi-Fi."
new "Déconnecte un appareil connecté via Wi-Fi."
# game/android.rpy:453
old "List Devices"
new "Lister les appareils"
# game/android.rpy:465
old "Wi-Fi Debugging Disconnect"
new "Debug : déconnexion Wi-Fi"
# game/android.rpy:603
old "This can be found in 'List Devices'."
new "Introuvable dans 'Lister les appareils'."
# game/androidstrings.rpy:17
old "Installing the bundle appears to have failed."
new "L'installation du bundle semble avoir échoué."
# game/androidstrings.rpy:19
old "Launching the app appears to have failed."
new "Le lancement de l'app semble avoir échoué."
# game/androidstrings.rpy:44
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
new "La version de Java présente sur votre ordinateur ne semble pas être JDK 8, qui est la seule version supportée par le SDK Android. Si vous devez installer JDK 8, vous pouvez le télécharger ici :\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nVous pouvez aussi régler la variable d'environnement JAVA_HOME sur une autre version de Java."
# game/updater.rpy:109
old "• {a=https://www.renpy.org/doc/html/changelog.html}View change log{/a}"
new "• {a=https://www.renpy.org/doc/html/changelog.html}Regarder le changelog{/a}"
# game/updater.rpy:111
old "• {a=https://www.renpy.org/dev-doc/html/changelog.html}View change log{/a}"
new "• {a=https://www.renpy.org/dev-doc/html/changelog.html}Regarder le changelog{/a}"
# game/android.rpy:60
old "Removes Android temporary files."
new "Retirer les fichiers temporaires Android."
# game/android.rpy:472
old "Clean"
new "Nettoyer"
# game/android.rpy:628
old "Cleaning up Android project."
new "Nettoyage du projet Android."
# game/androidstrings.rpy:43
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue."
new "Impossible d'utiliser javac pour compiler un fichier de test. Si vous n'avez pas installé Java Development Kit, téléchargez-le ici :\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nLe JDK est différent du JRE, donc il est possible d'avoir Java sans avoir le JDK. Vérifiez que vous avez installé les 'JavaSoft (Oracle) registry keys'.\n\nSans un JDK fonctionnel, je ne peux pas continuer."
# game/androidstrings.rpy:64
old "I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place."
new "J'ai ouvert le répertoire contenant android.keystore et bundle.keystore. Sauvegardez-les, et gardez-les dans un endroit sûr."
# game/choose_directory.rpy:67
old "Select Projects Directory"
new "Sélectionner le répertoire des Projets"
# game/distribute.rpy:1674
old "Copying files..."
new "Copie des fichiers..."
# game/distribute_gui.rpy:195
old "Update old-game"
new "Mettre à jour old-game"
# game/editor.rpy:152
old "A modern editor with many extensions including advanced Ren'Py integration."
new "Un éditeur moderne avec beaucoup d'extensions, y compris des intégrations Ren'Py avancées."
# game/editor.rpy:153
old "A modern editor with many extensions including advanced Ren'Py integration.\n{a=jump:reinstall_vscode}Upgrade Visual Studio Code to the latest version.{/a}"
new "Un éditeur moderne avec beaucoup d'extensions, y compris des intégrations Ren'Py avancées.\n{a=jump:reinstall_vscode}Mettez Visual Studio Code à jour.{/a}"
# game/editor.rpy:162
old "Visual Studio Code"
new "Visual Studio Code"
# game/editor.rpy:162
old "Up to 110 MB download required."
new "Jusqu'à 110 Mo nécessaires pour le téléchargement."
# game/editor.rpy:175
old "A modern and approachable text editor."
new "Un éditeur de texte moderne et accessible."
# game/editor.rpy:187
old "Atom"
new "Atom"
# game/editor.rpy:200
old "jEdit"
new "jEdit"
# game/editor.rpy:209
old "Visual Studio Code (System)"
new "Visual Studio Code (Système)"
# game/editor.rpy:209
old "Uses a copy of Visual Studio Code that you have installed outside of Ren'Py. It's recommended you install the language-renpy extension to add support for Ren'Py files."
new "Utilise une copie de Visual Studio Code que vous avez installé en-dehors de Ren'Py. Il est recommandé d'installer l'extension language-renpy pour ajouter la gestion des fichiers Ren'Py."
# game/installer.rpy:10
old "Downloading [extension.download_file]."
new "Téléchargement de [extension.download_file]."
# game/installer.rpy:11
old "Could not download [extension.download_file] from [extension.download_url]:\n{b}[extension.download_error]"
new "Impossible de télécharger [extension.download_file] depuis [extension.download_url] :\n{b}[extension.download_error]"
# game/installer.rpy:12
old "The downloaded file [extension.download_file] from [extension.download_url] is not correct."
new "le fichier [extension.download_file] téléchargé depuis [extension.download_url] est incorrect."
# game/interface.rpy:124
old "[interface.version]"
new "[interface.version]"
# game/preferences.rpy:154
old "Clean temporary files"
new "Nettoyer les fichiers temporaires"
# game/preferences.rpy:256
old "Cleaning temporary files..."
new "Nettoyage des fichiers temporaires..."
# game/project.rpy:280
old "This may be because the project is not writeable."
new "Il est possible que le projet ne soit pas accessible en écriture."
# game/translations.rpy:391
old "Language (or None for the default language):"
new "Langue (or None pour la langue par défaut) :"
# game/web.rpy:344
old "This feature is not supported in Ren'Py 8."
new "Cette fonctionnalité n'est pas supportée dans Ren'Py 8."
# game/web.rpy:344
old "We will restore support in a future release of Ren'Py 8. Until then, please use Ren'Py 7 for web support."
new "La version web sera supportée à nouveau dans une future version de Ren'Py 8. En attendant, utilisez Ren'Py 7 pour des distributions web."
# game/preferences.rpy:104
old "General"
new "Général"
# game/preferences.rpy:105
old "Options"
new "Options"
# game/preferences.rpy:244
old "Launcher Theme:"
new "Thème du lanceur :"
# game/preferences.rpy:254
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
new "Plus d'informations sur comment créer un thème personnalisé se trouvent {a=https://www.renpy.org/doc/html/skins.html}dans la documentation de Ren'Py{/a}."
# game/preferences.rpy:271
old "Install Libraries:"
new "Installer des bibliothèques :"
# game/updater.rpy:64
old "Release (Ren'Py 8, Python 3)"
new "Stable (Ren'Py 8, Python 3)"
# game/updater.rpy:65
old "Release (Ren'Py 7, Python 2)"
new "Stable (Ren'Py 7, Python 2)"
# game/updater.rpy:69
old "Prerelease (Ren'Py 8, Python 3)"
new "Pré-stable (Ren'Py 8, Python 3)"
# game/updater.rpy:70
old "Prerelease (Ren'Py 7, Python 2)"
new "Pré-stable (Ren'Py 7, Python 2)"
# game/updater.rpy:77
old "Nightly (Ren'Py 8, Python 3)"
new "Nightly (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly (Ren'Py 7, Python 2)"
new "Nightly (Ren'Py 7, Python 2)"
# game/preferences.rpy:327
old "{#in language font}Welcome! Please choose a language"
new "{font=fonts/Roboto-Light.ttf}Bienvenue ! Choisissez une langue{/font}"
# game/preferences.rpy:327
old "{#in language font}Start using Ren'Py in [lang_name]"
new "{font=fonts/Roboto-Light.ttf}Commencez à utiliser Ren'Py en [lang_name]{/font}"
# game/distribute_gui.rpy:231
old "(DLC)"
new "(DLC)"
# game/project.rpy:46
old "Lint checks your game for potential mistakes, and gives you statistics."
new "Lint vérifie votre jeu pour des erreurs communes, et génère des statistiques."
new "## Les fichiers correspondant au format de documentation sont dupliqués pour les compilation sur Mac, c'est pourquoi ils apparaissent deux fois dans l’archive zip."
# options.rpy:196
old "## A Google Play license key is required to download expansion files and perform in-app purchases. It can be found on the \"Services & APIs\" page of the Google Play developer console."
new "## Une clé de licence A Google Play est requise pour télécharger les fichiers et permettre les achats dans l'application. Vous pourrez la trouver sur la page « Services & APIs » de la console de développement Google Play."
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
new "## Une clé de licence Google Play est requise pour permettre les achats depuis l'application. Vous pourrez la trouver dans la console de développement Google Play, sous \"Monétiser\" > \"Configuration de la monétisation\" > \"Licences\"."
# options.rpy:203
old "## The username and project name associated with an itch.io project, separated by a slash."
new "Active ou désactives les «sauts des dialogues»."
new "Active ou désactive les «sauts des dialogues»."
# screens.rpy:1027
old "Page Up"
@@ -621,8 +621,8 @@
new "## Les dialogues sont affichés soit dans une vpgrid soit dans une vbox."
# screens.rpy:1314
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 "## Si fourni, affiche le menu. Le menu peut s’afficher de manière incorrecte si config.narrator_menu est initialisé à True, comme c’est le cas au-dessus."
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
new "## Si fourni, affiche le menu. Le menu peut s’afficher de manière incorrecte si config.narrator_menu est initialisé à True."
# screens.rpy:1344
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
@@ -719,3 +719,15 @@
# gui/game/screens.rpy:1049
old "Opens the accessibility menu."
new "Ouvre le menu d'accessibilité."
# gui/game/screens.rpy:1397
old "## Bubble screen"
new "## Screen des bulles"
# gui/game/screens.rpy:1399
old "## The Bubble screen is used to display dialogue to the player when using speech bubbles. The Bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
new "## Le screen des bulles est utilisé pour afficher des dialogues en utilisant des bulles. Ce screen prend les mêmes paramètres que le screen say, doit prévoir un displayable avec l'id \"what\", et peut créer des displayables avec les ids \"namebox\", \"who\", et \"window\"."
# gui/game/screens.rpy:1404
old "## https://www.renpy.org/doc/html/screen_special.html#bubble"
new "## https://www.renpy.org/doc/html/screen_special.html#bubble"
new "Sind Sie sicher, dass sie die Szenen-Wiederholung beenden möchten?"
# 00gui.rpy:234
old "Are you sure you want to begin skipping?"
new "Sind Sie sicher, dass Sie vorspulen möchten?"
new "Sind Sie sicher, dass Sie Text überspringen möchten?"
# 00gui.rpy:235
old "Are you sure you want to skip to the next choice?"
new "Sind Sie sicher, dass Sie zur nächsten Auswahl vorspulen möchten?"
new "Sind Sie sicher, dass Sie zur nächsten Auswahl springen möchten?"
# 00gui.rpy:236
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Are you sure you want to skip unseen dialogue to the next choice?"
new "Sind Sie sicher, dass sie ungesehenen Dialog bis zur nächsten Entscheidung überspringen möchten?"
# 00keymap.rpy:250
old "Saved screenshot as %s."
@@ -207,7 +207,7 @@ translate german strings:
# 00library.rpy:142
old "Self-voicing disabled."
new "Self-voicing disabled."
new "Sprachausgabe deaktiviert."
# 00library.rpy:143
old "Clipboard voicing enabled. "
@@ -215,15 +215,15 @@ translate german strings:
# 00library.rpy:144
old "Self-voicing enabled. "
new "Self-voicing enabled. "
new "Sprachausgabe aktiviert. "
# 00library.rpy:179
old "Skip Mode"
new "Vorspulen"
new "Skip-Modus"
# 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 "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 "Dieses Programm enthält kostenlose Software unter einer Reihe von Lizenzen, einschließlich der MIT License und der GNU Lesser General Public License. Eine vollständige Liste aller Software, inklusive Links zum vollständigen Quellcode, kann {a=https://www.renpy.org/l/license}hier{/a} gefunden werden."
# 00preferences.rpy:422
old "Clipboard voicing enabled. Press 'shift+C' to disable."
@@ -231,47 +231,47 @@ translate german 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 "Sprachausgabe würde \"[renpy.display.tts.last]\" sagen. Zum deaktivieren 'alt+shift+V' drücken."
# 00preferences.rpy:426
old "Self-voicing enabled. Press 'v' to disable."
new "Self-voicing enabled. Press 'v' to disable."
new "Sprachausgabe aktiviert. Zum deaktivieren 'v' drücken."
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "Contacting App Store\nPlease Wait..."
new "Kontaktiert App Store\nBitte warten..."
# 00updater.rpy:367
old "The Ren'Py Updater is not supported on mobile devices."
new "The Ren'Py Updater is not supported on mobile devices."
new "Der Ren'Py Updater wird auf Mobilgeräten nicht unterstützt."
# 00updater.rpy:486
old "An error is being simulated."
new "An error is being simulated."
new "Ein Error wird simuliert."
# 00updater.rpy:662
old "Either this project does not support updating, or the update status file was deleted."
new "Either this project does not support updating, or the update status file was deleted."
new "Entweder unterstützt dieses Projekt keine Updates, oder die Update-Status-Datei wurde gelöscht."
# 00updater.rpy:676
old "This account does not have permission to perform an update."
new "This account does not have permission to perform an update."
new "Dieser Account hat keine Erlaubnis, Updates durchzuführen."
# 00updater.rpy:679
old "This account does not have permission to write the update log."
new "This account does not have permission to write the update log."
new "Dieser Account hat keine Erlaubnis, Update-Logs zu schreiben."
# 00updater.rpy:704
old "Could not verify update signature."
new "Could not verify update signature."
new "Konnte die Update-Signatur nicht verifizieren."
# 00updater.rpy:975
old "The update file was not downloaded."
new "The update file was not downloaded."
new "Die Update-Datei wurde nicht heruntergeladen."
# 00updater.rpy:993
old "The update file does not have the correct digest - it may have been corrupted."
new "The update file does not have the correct digest - it may have been corrupted."
new "Die Update-Datei hat nicht das richtige Format - sie wurde möglicherweise beschädigt."
# 00updater.rpy:1049
old "While unpacking {}, unknown type {}."
@@ -283,7 +283,7 @@ translate german strings:
# 00updater.rpy:1404
old "This program is up to date."
new "Dieses Programm ist aktuell."
new "Dieses Programm ist auf dem neuesten Stand."
# 00updater.rpy:1406
old "[u.version] is available. Do you want to install it?"
@@ -291,27 +291,27 @@ translate german strings:
# 00updater.rpy:1408
old "Preparing to download the updates."
new "Vorbereiten, um die Aktualisierungen herunterzuladen."
new "Bereitet das Herunterladen der Updates vor."
# 00updater.rpy:1410
old "Downloading the updates."
new "Aktualisierungen werden heruntergeladen."
new "Updates werden heruntergeladen."
# 00updater.rpy:1412
old "Unpacking the updates."
new "Aktualisierungen werden entpackt."
new "Updates werden entpackt."
# 00updater.rpy:1416
old "The updates have been installed. The program will restart."
new "Die Aktualisierungen wurden installiert. Das Programm wird nun neustarten."
new "Die Updates wurden installiert. Das Programm wird nun neu gestartet."
old "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
new "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
new "Bitte wählen Sie das Farbschema, dass Sie benutzen möchten und klicken Sie dann auf \"Weiter\". Diese Farben können später wieder geändert werden."
# gui7.rpy:294
old "{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"
@@ -551,7 +553,7 @@ translate german strings:
# gui7.rpy:314
old "PROJECT NAME"
new "PROJEKTNAME"
new "PROJEKTNAME"
# gui7.rpy:314
old "Please enter the name of your project:"
@@ -570,16 +572,16 @@ translate german strings:
new "[project_dir!q] existiert bereits. Bitte wählen Sie einen anderen Projektnamen."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "Welche Auflösung soll das Projekt benutzen? Ren'Py kann Fenster vergössern oder verkleinern, aber dies wäre die anfängliche Größe eines Fensters und die Größe, in der Grafiken am schärfsten aussehen.\n\nDie Standardgröße [default_size[0]]x[default_size[1]] ist ein guter Kompromiss."
# gui7.rpy:389
old "Creating the new project..."
new "Creating the new project..."
new "Erstellt neues Projekt..."
# gui7.rpy:391
old "Updating the project..."
new "Updating the project..."
new "Aktualisiert das Projekt..."
# interface.rpy:107
old "Documentation"
@@ -811,7 +813,7 @@ translate german strings:
# navigation.rpy:200
old "screens"
new "Bildschirme"
new "Screens"
# navigation.rpy:201
old "callables"
@@ -1067,7 +1069,7 @@ translate german strings:
# translations.rpy:282
old "Updating default interface translations..."
new "Updating default interface translations..."
new "Aktualisiert Übersetzungen der Benutzeroberfläche..."
# translations.rpy:306
old "Extract Dialogue: [project.current.name!q]"
@@ -1197,3 +1199,737 @@ translate german strings:
old "Proceed"
new "Fortsetzen"
translate german strings:
# game/add_file.rpy:37
old "The file name may not be empty."
new "Der Dateiname darf nicht leer sein."
# game/android.rpy:35
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "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."
# 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 has been installed, but a bundle key hasn't been configured. Please create a new key, or restore bundle.keystore."
# game/android.rpy:40
old "Please select if you want a Play Bundle (for Google Play), or a Universal APK (for sideloading and other app stores)."
new "Please select if you want a Play Bundle (for Google Play), or a Universal APK (for sideloading and other app stores)."
# game/android.rpy:55
old "Lists the connected devices."
new "Lists the connected devices."
# game/android.rpy:56
old "Pairs with a device over Wi-Fi, on Android 11+."
new "Pairs with a device over Wi-Fi, on Android 11+."
# game/android.rpy:57
old "Connects to a device over Wi-Fi, on Android 11+."
new "Connects to a device over Wi-Fi, on Android 11+."
# game/android.rpy:58
old "Disconnects a device connected over Wi-Fi."
new "Disconnects a device connected over Wi-Fi."
# game/android.rpy:60
old "Removes Android temporary files."
new "Removes Android temporary files."
# game/android.rpy:62
old "Builds an Android App Bundle (ABB), intended to be uploaded to Google Play. This can include up to 2GB of data."
new "Builds an Android App Bundle (ABB), intended to be uploaded to Google Play. This can include up to 2GB of data."
# game/android.rpy:63
old "Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data."
new "Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data."
# game/android.rpy:335
old "Android: [project.current.display_name!q]"
new "Android: [project.current.display_name!q]"
# game/android.rpy:401
old "Play Bundle"
new "Play Bundle"
# game/android.rpy:406
old "Universal APK"
new "Universal APK"
# game/android.rpy:456
old "List Devices"
new "List Devices"
# game/android.rpy:460
old "Wi-Fi Debugging Pair"
new "Wi-Fi Debugging Pair"
# game/android.rpy:464
old "Wi-Fi Debugging Connect"
new "Wi-Fi Debugging Connect"
# game/android.rpy:468
old "Wi-Fi Debugging Disconnect"
new "Wi-Fi Debugging Disconnect"
# game/android.rpy:472
old "Clean"
new "Clean"
# game/android.rpy:569
old "Wi-Fi Pairing Code"
new "Wi-Fi Pairing Code"
# game/android.rpy:569
old "If supported, this can be found in 'Developer options', 'Wireless debugging', 'Pair device with pairing code'."
new "If supported, this can be found in 'Developer options', 'Wireless debugging', 'Pair device with pairing code'."
# game/android.rpy:576
old "Pairing Host & Port"
new "Pairing Host & Port"
# game/android.rpy:592
old "IP Address & Port"
new "IP Address & Port"
# game/android.rpy:592
old "If supported, this can be found in 'Developer options', 'Wireless debugging'."
new "If supported, this can be found in 'Developer options', 'Wireless debugging'."
# game/android.rpy:608
old "This can be found in 'List Devices'."
new "This can be found in 'List Devices'."
# game/android.rpy:628
old "Cleaning up Android project."
new "Cleaning up Android project."
# game/androidstrings.rpy:7
old "{} is not a directory."
new "{} ist kein Verzeichnis."
# game/androidstrings.rpy:8
old "{} does not contain a Ren'Py game."
new "{} enthält kein Ren'Py Projekt."
# game/androidstrings.rpy:10
old "Run configure before attempting to build the app."
new "Run configure before attempting to build the app."
# game/androidstrings.rpy:11
old "Updating project."
new "Aktualisiert Projekt."
# game/androidstrings.rpy:12
old "Creating assets directory."
new "Erstellt Asset-Verzeichnis."
# game/androidstrings.rpy:13
old "Packaging internal data."
new "Verpackt interne Daten."
# game/androidstrings.rpy:14
old "I'm using Gradle to build the package."
new "Ich benutze Gradle, um das Paket zu generieren."
# game/androidstrings.rpy:15
old "The build seems to have failed."
new "Generierung ist fehlgeschlagen."
# game/androidstrings.rpy:16
old "I'm installing the bundle."
new "Ich installiere das Bundle."
# game/androidstrings.rpy:17
old "Installing the bundle appears to have failed."
new "Installation des Bundles ist fehlgeschlagen."
# game/androidstrings.rpy:18
old "Launching app."
new "Startet App."
# game/androidstrings.rpy:19
old "Launching the app appears to have failed."
new "Starten der App ist fehlgeschlagen."
# game/androidstrings.rpy:20
old "The build seems to have succeeded."
new "Paket-Generierung war erfolgreich."
# game/androidstrings.rpy:21
old "What is the full name of your application? This name will appear in the list of installed applications."
new "Was ist der vollständige Name Ihrer Applikation? Dieser Name wird in der Liste von installierten Anwendungen erscheinen."
# 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 "Was ist der Kurzname Ihrer Applikation? Dieser Name wird im Launcher und für Anwendungsverknüpfungen verwendet."
# 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 "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."
# game/androidstrings.rpy:24
old "The package name may not be empty."
new "The package name may not be empty."
# game/androidstrings.rpy:25
old "The package name may not contain spaces."
new "The package name may not contain spaces."
# game/androidstrings.rpy:26
old "The package name must contain at least one dot."
new "The package name must contain at least one dot."
# game/androidstrings.rpy:27
old "The package name may not contain two dots in a row, or begin or end with a dot."
new "The package name may not contain two dots in a row, or begin or end with a dot."
# game/androidstrings.rpy:28
old "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
new "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
# game/androidstrings.rpy:29
old "{} is a Java keyword, and can't be used as part of a package name."
new "{} is a Java keyword, and can't be used as part of a package name."
# 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 "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."
# game/androidstrings.rpy:31
old "The version number must contain only numbers and dots."
new "The version number must contain only numbers and dots."
# game/androidstrings.rpy:32
old "How much RAM do you want to allocate to Gradle?\n\nThis must be a positive integer number."
new "How much RAM do you want to allocate to Gradle?\n\nThis must be a positive integer number."
# game/androidstrings.rpy:33
old "The RAM size must contain only numbers."
new "The RAM size must contain only numbers."
# game/androidstrings.rpy:34
old "How would you like your application to be displayed?"
new "How would you like your application to be displayed?"
# game/androidstrings.rpy:35
old "In landscape orientation."
new "In landscape orientation."
# game/androidstrings.rpy:36
old "In portrait orientation."
new "In portrait orientation."
# game/androidstrings.rpy:37
old "In the user's preferred orientation."
new "In the user's preferred orientation."
# game/androidstrings.rpy:38
old "Do you want to automatically update the Java source code?"
new "Do you want to automatically update the Java source code?"
# game/androidstrings.rpy:39
old "Yes. This is the best choice for most projects."
new "Yes. This is the best choice for most projects."
# game/androidstrings.rpy:40
old "No. This may require manual updates when Ren'Py or the project configuration changes."
new "No. This may require manual updates when Ren'Py or the project configuration changes."
# game/androidstrings.rpy:41
old "Unknown configuration variable: {}"
new "Unknown configuration variable: {}"
# game/androidstrings.rpy:42
old "I'm compiling a short test program, to see if you have a working JDK on your system."
new "I'm compiling a short test program, to see if you have a working JDK on your system."
# game/androidstrings.rpy:43
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue."
new "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue."
# game/androidstrings.rpy:44
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
new "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."
# game/androidstrings.rpy:45
old "The JDK is present and working. Good!"
new "The JDK is present and working. Good!"
# game/androidstrings.rpy:46
old "The Android SDK has already been unpacked."
new "The Android SDK has already been unpacked."
# game/androidstrings.rpy:47
old "Do you accept the Android SDK Terms and Conditions?"
new "Do you accept the Android SDK Terms and Conditions?"
# game/androidstrings.rpy:48
old "I'm downloading the Android SDK. This might take a while."
new "I'm downloading the Android SDK. This might take a while."
# game/androidstrings.rpy:49
old "I'm extracting the Android SDK."
new "I'm extracting the Android SDK."
# game/androidstrings.rpy:50
old "I've finished unpacking the Android SDK."
new "I've finished unpacking the Android SDK."
# game/androidstrings.rpy:51
old "I'm about to download and install the required Android packages. This might take a while."
new "I'm about to download and install the required Android packages. This might take a while."
# game/androidstrings.rpy:52
old "I was unable to accept the Android licenses."
new "I was unable to accept the Android licenses."
# game/androidstrings.rpy:54
old "I was unable to install the required Android packages."
new "I was unable to install the required Android packages."
# game/androidstrings.rpy:55
old "I've finished installing the required Android packages."
new "I've finished installing the required Android packages."
# game/androidstrings.rpy:56
old "Please enter your name or the name of your organization."
new "Please enter your name or the name of your organization."
# game/androidstrings.rpy:57
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 "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?"
# game/androidstrings.rpy:58
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 "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?"
# game/androidstrings.rpy:59
old "Could not create android.keystore. Is keytool in your path?"
new "Could not create android.keystore. Is keytool in your path?"
# game/androidstrings.rpy:60
old "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
new "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
# game/androidstrings.rpy:61
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 "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?"
# game/androidstrings.rpy:62
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 "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?"
# game/androidstrings.rpy:63
old "Could not create bundle.keystore. Is keytool in your path?"
new "Could not create bundle.keystore. Is keytool in your path?"
# game/androidstrings.rpy:64
old "I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place."
new "I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place."
# game/androidstrings.rpy:65
old "It looks like you're ready to start packaging games."
new "It looks like you're ready to start packaging games."
# game/choose_directory.rpy:67
old "Select Projects Directory"
new "Select Projects Directory"
# game/choose_directory.rpy:79
old "The selected projects directory is not writable."
new "The selected projects directory is not writable."
# game/choose_theme.rpy:508
old "changing the theme"
new "changing the theme"
# game/distribute.rpy:1217
old "Signing the Macintosh application...\n(This may take a long time.)"
new "Signing the Macintosh application...\n(This may take a long time.)"
# game/distribute.rpy:1674
old "Copying files..."
new "Copying files..."
# game/distribute_gui.rpy:157
old "Build Distributions: [project.current.display_name!q]"
new "Applikation erstellen: [project.current.display_name!q]"
# game/distribute_gui.rpy:195
old "Update old-game"
new "Update old-game"
# game/dmgcheck.rpy:50
old "Ren'Py is running from a read only folder. Some functionality will not work."
new "Ren'Py is running from a read only folder. Some functionality will not work."
# 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 "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."
# game/editor.rpy:152
old "A modern editor with many extensions including advanced Ren'Py integration."
new "A modern editor with many extensions including advanced Ren'Py integration."
# game/editor.rpy:153
old "A modern editor with many extensions including advanced Ren'Py integration.\n{a=jump:reinstall_vscode}Upgrade Visual Studio Code to the latest version.{/a}"
new "Ein moderner Editor mit vielen Erweiterungen für fortgeschrittene Ren'Py-Integration.\n{a=jump:reinstall_vscode}Visual Studio Code auf die neueste Version aktualisieren.{/a}"
# game/editor.rpy:162
old "Visual Studio Code"
new "Visual Studio Code"
# game/editor.rpy:162
old "Up to 110 MB download required."
new "Erfordert herunterladen von bis zu 110 MB."
# game/editor.rpy:175
old "A modern and approachable text editor."
new "Ein moderner und zugänglicher Texteditor."
# game/editor.rpy:187
old "Atom"
new "Atom"
# game/editor.rpy:187
old "Up to 150 MB download required."
new "Erfordert herunterladen von bis zu 150 MB."
# game/editor.rpy:200
old "jEdit"
new "jEdit"
# game/editor.rpy:209
old "Visual Studio Code (System)"
new "Visual Studio Code (System)"
# game/editor.rpy:209
old "Uses a copy of Visual Studio Code that you have installed outside of Ren'Py. It's recommended you install the language-renpy extension to add support for Ren'Py files."
new "Benutzt eine Kopie von Visual Studio Code, welche Sie ausserhalb von Ren'Py installiert haben. Installation der language-renpy Extension für den Support von Ren'Py-Dateien ist empfohlen."
# game/editor.rpy:215
old "System Editor"
new "System-Editor"
# game/editor.rpy:234
old "None"
new "Keiner"
# game/editor.rpy:341
old "Edit [text]."
new "[text] bearbeiten."
# game/front_page.rpy:165
old "audio"
new "audio"
# game/front_page.rpy:182
old "Open project"
new "Projekt öffnen"
# game/front_page.rpy:219
old "Web"
new "Web"
# game/front_page.rpy:219
old "(Beta)"
new "(Beta)"
# game/gui7.rpy:302
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\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}"
# game/gui7.rpy:333
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Benutzerdefiniert. Die GUI ist für ein 16:9 Seitenverhältnis optimiert."
# game/gui7.rpy:350
old "WIDTH"
new "BREITE"
# game/gui7.rpy:350
old "Please enter the width of your game, in pixels."
new "Bitte tragen Sie die Breite des Spiels (in Pixel) ein."
# game/gui7.rpy:360
old "The width must be a number."
new "Die Breite muss eine Zahl sein."
# game/gui7.rpy:366
old "HEIGHT"
new "HÖHE"
# game/gui7.rpy:366
old "Please enter the height of your game, in pixels."
new "Bitte tragen Sie die Höhe des Spiels (in Pixel) ein."
# game/gui7.rpy:376
old "The height must be a number."
new "Die Höhe muss eine Zahl sein."
# game/gui7.rpy:424
old "creating a new project"
new "creating a new project"
# game/gui7.rpy:428
old "activating the new project"
new "activating the new project"
# 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 "Konnte [name!t] nicht installieren, weil keine Datei im Ren'Py SDK-Verzeichnis mit [zipglob] übereinstimmt."
# game/install.rpy:79
old "Successfully installed [name!t]."
new "[name!t] erfolgreich installiert."
# game/install.rpy:114
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 "Dieses Menü ermöglicht die Installation von Libraries, welche mit Ren'Py verteilt werden können. Manche davon benötigen die Zustimmung zu Drittanbieter-Lizenzen, um benutzt oder verteilt werden zu können."
# game/install.rpy:120
old "Install Steam Support"
new "Steam-Support installieren"
# game/install.rpy:129
old "Before installing Steam support, please make sure you are a {a=https://partner.steamgames.com/}Steam partner{/a}."
new "Stellen Sie sicher, dass sie ein {a=https://partner.steamgames.com/}Steam Partner{/a} sind, bevor Sie Steam-Support installieren."
# game/install.rpy:141
old "Steam support has already been installed."
new "Steam-Support wurde bereits installiert."
# game/install.rpy:145
old "Install Live2D Cubism SDK for Native"
new "Live2D Cubism SDK for Native installieren"
# game/install.rpy:159
old "Install Libraries"
new "Libraries installieren"
# game/install.rpy:185
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 "Die {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} fügt Support für Live2D-Modelle hinzu. Platzieren Sie CubismSdkForNative-4-{i}version{/i}.zip in das Ren'Py SDK-Verzeichnis, und klicken Sie auf \"Install\". Ein game mit Live2D zu veröffentlichen erfordert das Akzeptieren einer Lizenz von Live2D, Inc."
# game/install.rpy:189
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 in Ren'Py unterstützt keine Web oder Android x86_64 (inklusive Emulatoren und Chrome OS) Projekte und muss manuell zu iOS Projekten hinzugefügt werden. Es muss nach einem Ren'Py-Update oder nach der Installation vom Android-Support reinstalliert werden."
# game/install.rpy:194
old "Open Ren'Py SDK Directory"
new "Ren'Py SDK-Verzeichnis öffnen"
# game/installer.rpy:10
old "Downloading [extension.download_file]."
new "[extension.download_file] wird heruntergeladen."
# game/installer.rpy:11
old "Could not download [extension.download_file] from [extension.download_url]:\n{b}[extension.download_error]"
new "Konnte [extension.download_file] nicht von [extension.download_url] herunterladen:\n{b}[extension.download_error]"
# game/installer.rpy:12
old "The downloaded file [extension.download_file] from [extension.download_url] is not correct."
new "Die heruntergeladene Datei [extension.download_file] von [extension.download_url] ist nicht korrekt."
# game/interface.rpy:124
old "[interface.version]"
new "[interface.version]"
# game/interface.rpy:141
old "Ren'Py Sponsor Information"
new "Ren'Py Sponsoren-Information"
# game/interface.rpy:377
old "opening the log file"
new "opening the log file"
# game/ios.rpy:269
old "iOS: [project.current.display_name!q]"
new "iOS: [project.current.display_name!q]"
# game/ios.rpy:379
old "There are known issues with the iOS simulator on Apple Silicon. Please test on x86_64 or iOS devices."
new "There are known issues with the iOS simulator on Apple Silicon. Please test on x86_64 or iOS devices."
# game/itch.rpy:43
old "Downloading the itch.io butler."
new "Lädt den Itch.io-Butler herunter."
# game/navigation.rpy:168
old "Navigate: [project.current.display_name!q]"
new "Navigieren: [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 "Sie werden ein Projekt auf [new_project_language]{#this substitution may be localized} erstellen. Ändern Sie die Sprache des Launchers in den Einstellungen, um Projekte in einer anderen Sprache zu erstellen."
# game/preferences.rpy:106
old "General"
new "Generell"
# game/preferences.rpy:107
old "Options"
new "Optionen"
# game/preferences.rpy:227
old "Daily check for update"
new "Täglich nach Updates schauen"
# game/preferences.rpy:246
old "Launcher Theme:"
new "Launcher-Design:"
# game/preferences.rpy:250
old "Default theme"
new "Standard-Design"
# game/preferences.rpy:251
old "Dark theme"
new "Dunkles Design"
# game/preferences.rpy:252
old "Custom theme"
new "Benutzerdefiniertes Design"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
new "Informationen über benutzerdefinierte Designs können {a=https://www.renpy.org/doc/html/skins.html}in der Ren'Py-Dokumentation{/a} gefunden werden."
# game/preferences.rpy:273
old "Install Libraries:"
new "Libraries installieren:"
# game/preferences.rpy:300
old "Reset window size"
new "Fenstergröße zurücksetzen"
# game/preferences.rpy:301
old "Clean temporary files"
new "Temporäre Dateien säubern"
# game/preferences.rpy:308
old "Cleaning temporary files..."
new "Säubert Temporäre Dateien..."
# game/preferences.rpy:338
old "{#in language font}Welcome! Please choose a language"
new "{#in language font}Willkommen! Bitte wählen Sie eine Sprache"
# game/preferences.rpy:373
old "{#in language font}Start using Ren'Py in [lang_name]"
new "{#in language font}Beginnen, Ren'Py auf [lang_name] zu benutzen"
# game/project.rpy:280
old "This may be because the project is not writeable."
new "This may be because the project is not writeable."
# game/translations.rpy:91
old "Translations: [project.current.display_name!q]"
new "Übersetzungen: [project.current.display_name!q]"
# game/translations.rpy:342
old "Extract Dialogue: [project.current.display_name!q]"
new "Dialog extrahieren: [project.current.display_name!q]"
# game/translations.rpy:391
old "Language (or None for the default language):"
new "Sprache (oder None für die Standard-Sprache):"
# game/updater.rpy:64
old "Release (Ren'Py 8, Python 3)"
new "Release (Ren'Py 8, Python 3)"
# game/updater.rpy:65
old "Release (Ren'Py 7, Python 2)"
new "Release (Ren'Py 7, Python 2)"
# game/updater.rpy:69
old "Prerelease (Ren'Py 8, Python 3)"
new "Prerelease (Ren'Py 8, Python 3)"
# game/updater.rpy:70
old "Prerelease (Ren'Py 7, Python 2)"
new "Prerelease (Ren'Py 7, Python 2)"
# game/updater.rpy:77
old "Nightly (Ren'Py 8, Python 3)"
new "Nightly (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly (Ren'Py 7, Python 2)"
new "Nightly (Ren'Py 7, Python 2)"
# game/updater.rpy:107
old "The update channel controls the version of Ren'Py the updater will download."
new "The update channel controls the version of Ren'Py the updater will download."
# game/updater.rpy:115
old "• {a=https://www.renpy.org/doc/html/changelog.html}View change log{/a}"
new "• {a=https://www.renpy.org/doc/html/changelog.html}View change log{/a}"
# game/updater.rpy:117
old "• {a=https://www.renpy.org/dev-doc/html/changelog.html}View change log{/a}"
new "• {a=https://www.renpy.org/dev-doc/html/changelog.html}View change log{/a}"
# game/updater.rpy:123
old "• This version is installed and up-to-date."
new "• Diese Version ist installiert und aktuell."
# game/updater.rpy:135
old "%B %d, %Y"
new "%B %d, %Y"
# game/updater.rpy:214
old "Fetching the list of update channels"
new "Fetching the list of update channels"
# game/updater.rpy:219
old "downloading the list of update channels"
new "downloading the list of update channels"
# game/web.rpy:242
old "Preparing progressive download"
new "Preparing progressive download"
# 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 "Web-Applikation erstellen"
# game/web.rpy:308
old "Build and Open in Browser"
new "Erstellen und in Browser öffnen"
# game/web.rpy:309
old "Open in Browser"
new "In Browser öffnen"
# game/web.rpy:310
old "Open build directory"
new "Applikations-Verzeichnis öffnen"
# game/web.rpy:332
old "Images and music can be downloaded while playing. A 'progressive_download.txt' file will be created so you can configure this behavior."
new "Images and music can be downloaded while playing. A 'progressive_download.txt' file will be created so you can configure this behavior."
# game/web.rpy:336
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 "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."
# game/web.rpy:344
old "This feature is not supported in Ren'Py 8."
new "Diese Funktion wird in Ren'Py 8 nicht unterstützt."
# game/web.rpy:344
old "We will restore support in a future release of Ren'Py 8. Until then, please use Ren'Py 7 for web support."
new "Wir werden Support in einer zukünftigen Version von Ren'Py 8 wiederherstellen. Bitte benutzen Sie Ren'Py 7 für Web-Applikationen bis dann."
# game/web.rpy:348
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
new "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
new "{font=fonts/Roboto-Light.ttf}Ελληνικά{/font}"
# about.rpy:39
old "[version!q]"
@@ -562,8 +564,8 @@ translate greek strings:
new "Ο φάκελος [project_name!q] υπάρχει ήδη. Παρακαλούμε επιλέξτε άλλο όνομα για το έργο σας."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Untuk membuat package Android, silahkan download RAPT, unzip/extrak, dan taruh di direktori Ren,Py. Dan restart launcher Ren'Py."
new "Untuk membangun(package) ke versi Android, silahkan unduh RAPT, unzip/ekstrak, dan taruh di direktori Ren,Py. Dan muat ulang launcher Ren'Py."
# android.rpy:31
old "An x86 Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "Java Development Kit 32-bit diperlukan untuk membuat package Android di Windows, JDK itu berbeda dari JRE, jadi sangat mungkin kamu memiliki java tanpa JDK\n\nTolong {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}Download dan install JDK{/a}, lalu restart launcher Ren'Py "
new "x86 Java Development Kit diperlukan untuk membangun(package) ke versi Android di Windows, JDK berbeda dengan JRE, jadi sangat mungkin kamu memiliki java tanpa JDK\n\nTolong {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}Unduh dan pasang JDK{/a}, lalu muat ulang launcher Ren'Py "
# android.rpy:32
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
new "RAPT sudah terinstall, tapi kamu harus menginstall Android SDK sebelum kamu dapat membuat package Android. Untuk Melakukan Ini Pilih Install SDK"
new "RAPT sudah terpasang, tapi kamu harus memasang Android SDK sebelum kamu dapat membangun package Android. Untuk Melakukan Ini Pilih Install SDK"
# android.rpy:33
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
new "RAPT sudah terinstall, tapi kunci/key belum di configurasi. Silahkan buat kunci/key baru, atau restore android.keystore"
new "RAPT sudah terpasang, tapi kunci/key belum di konfigurasi. Silahkan buat kunci/key baru, atau restore android.keystore"
# android.rpy:34
old "The current project has not been configured. Use \"Configure\" to configure it before building."
new "Projek ini belum di configurasi. Gunakan \"Konfigurasi\" untuk mengkonfigurasi sebelum membuat build."
new "Projek ini belum dikonfigurasi. Gunakan \"Konfigurasi\" untuk mengkonfigurasi sebelum membuat build."
# 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."
@@ -55,7 +57,7 @@ translate indonesian strings:
# android.rpy:37
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Mencoba untuk mengemulasi perangkat Android.\n\nInput sentuhan di emulasikan melalui mouse, tapi hanya ketika tombol ditahan. Escape di mapped ke tombol menu, dan PageUp di mapped ke tombol back."
new "Uji coba pada perangkat Android.\n\nInput sentuhan di emulasikan melalui mouse, tapi hanya ketika tombol ditahan. Escape di mapped ke tombol menu, dan PageUp di mapped ke tombol back."
# android.rpy:38
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
@@ -67,7 +69,7 @@ translate indonesian strings:
# android.rpy:41
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
new "Download dan pasang Android SDK dan paket pendukung. Opsional, mengenerate key/kunci yang dibutuhkan untuk menandatangani paket."
new "Unduh dan pasang Android SDK dan paket pendukung. Opsional, mengenerate key/kunci yang dibutuhkan untuk menandatangani paket."
# android.rpy:42
old "Configures the package name, version, and other information about this project."
@@ -167,7 +169,7 @@ translate indonesian strings:
# android.rpy:437
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Sebelum mempackage aplikasi Android, kamu harus mendownload RAPT, Ren'Py Android Packaging Tool. Maukah kamu mendownload RAPT sekarang?"
new "Sebelum membangun(package) ke aplikasi Android, kamu harus mengunduh RAPT, Ren'Py Android Packaging Tool. unduh RAPT sekarang?"
# android.rpy:496
old "Remote ADB Address"
@@ -239,7 +241,7 @@ translate indonesian strings:
# distribute.rpy:459
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
new "Membangun distribusi gagal:\n\nVariabel build.directory_name mungkin tidak menginclude spasi ,tanda kutip ,atau titik koma."
new "Membangun distribusi gagal:\n\nVariabel build.directory_name mungkin tidak memasukan(include) spasi ,tanda kutip ,atau titik koma."
# distribute.rpy:504
old "No packages are selected, so there's nothing to do."
@@ -247,7 +249,7 @@ translate indonesian strings:
# distribute.rpy:516
old "Scanning Ren'Py files..."
new "Scanning file Ren'Py..."
new "Memindai file Ren'Py..."
# 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."
@@ -507,7 +509,7 @@ translate indonesian strings:
# front_page.rpy:256
old "Extract Dialogue"
new "Extrak Dialog"
new "Ekstrak Dialog"
# front_page.rpy:272
old "Checking script for potential problems..."
@@ -562,8 +564,8 @@ translate indonesian strings:
new "[project_dir!q] sudah tersedia, silahkan buat nama proyek yang berbeda."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "Resolusi apa yang harus di gunakan proyek? Ren'Py dapat mengubah ukuran jendela naik dan turun, ini adalah ukuran inisial dari jendela, ukuran yang menentukan aset manya yang harus di gambar, dan ukuran dimana aset akan menjadi lebih tajamm.\n\nSetelan default 1280x720 adalah ukuran yang paling bisa di kompromi."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "Resolusi apa yang harus di gunakan proyek? Ren'Py dapat mengubah ukuran jendela naik dan turun, ini adalah ukuran inisial dari jendela, ukuran yang menentukan aset manya yang harus di gambar, dan ukuran dimana aset akan menjadi lebih tajamm.\n\nSetelan default [default_size[0]]x[default_size[1]] adalah ukuran yang paling bisa di kompromi."
# gui7.rpy:389
old "Creating the new project..."
@@ -719,7 +721,7 @@ translate indonesian strings:
# ios.rpy:345
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
new "Sebelum mem package aplikasi iOS, Kamu harus mendownload renios, Ren'Py iOS support. Maukah kamu mendownload renios sekarang?"
new "Sebelum membangun ke aplikasi iOS, Kamu harus mengunduh renios, Ren'Py iOS support.unduh renios sekarang?"
# ios.rpy:354
old "XCODE PROJECTS DIRECTORY"
@@ -883,7 +885,7 @@ translate indonesian strings:
# preferences.rpy:96
old "Not Set"
new "Belum di Set"
new "Belum diatur"
# preferences.rpy:111
old "Text Editor:"
@@ -959,7 +961,7 @@ translate indonesian strings:
# project.rpy:229
old "Launching the project failed."
new "Gagal menjalankan proyek."
new "Proyek gagal dijalankan."
# project.rpy:229
old "Please ensure that your project launches normally before running this command."
@@ -967,7 +969,7 @@ translate indonesian strings:
# project.rpy:242
old "Ren'Py is scanning the project..."
new "Ren'Py sedang menscan proyek..."
new "Ren'Py sedang memindai proyek..."
# project.rpy:568
old "Launching"
@@ -1007,7 +1009,7 @@ translate indonesian strings:
# translations.rpy:168
old "Extract String Translations"
new "Extrak Terjemahan String"
new "Ekstrak Terjemahan String"
# translations.rpy:170
old "Merge String Translations"
@@ -1027,7 +1029,7 @@ translate indonesian 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 "Perintah extrak memungkinkan kamu untuk mengextrak terjemahan string dari proyek ke file sementara.\n\nPerintah merge menyatukan terjemahan yang di extrak ke proyek lain."
new "Perintah ekstrak memungkinkan kamu untuk mengekstrak string terjemahan dari proyek ke file sementara.\n\nPerintah merge menyatukan terjemahan yang di ekstrak ke proyek lain."
# translations.rpy:224
old "Ren'Py is generating translations...."
@@ -1111,7 +1113,7 @@ translate indonesian strings:
# updater.rpy:102
old "Prerelease"
new "Prerelease"
new "Prarilis"
# 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."
@@ -1139,11 +1141,11 @@ translate indonesian strings:
# updater.rpy:154
old "Checking for updates."
new "Mencek untuk update."
new "Mencek pembaharuan."
# updater.rpy:156
old "Ren'Py is up to date."
new "Renpy sudah up to date."
new "Renpy sudah up to date (terbaru)."
# updater.rpy:158
old "[u.version] is now available. Do you want to install it?"
@@ -1151,15 +1153,15 @@ translate indonesian strings:
# updater.rpy:160
old "Preparing to download the update."
new "Bersiap mendownload update."
new "Bersiap mengunduh pembaharuan."
# updater.rpy:162
old "Downloading the update."
new "Mendownload update."
new "Pengunduhan pembaharuan."
# updater.rpy:164
old "Unpacking the update."
new "Meng unpack update."
new "Meng unpack pembaharuan."
# updater.rpy:166
old "Finishing up."
@@ -1167,19 +1169,19 @@ translate indonesian strings:
# updater.rpy:168
old "The update has been installed. Ren'Py will restart."
new "Update telah terpasang. Ren'Py akan restart."
new "Pembaharuan telah terpasang. Ren'Py akan restart."
# updater.rpy:170
old "The update has been installed."
new "Update telah di pasang."
new "Pembaharuan telah di pasang."
# updater.rpy:172
old "The update was cancelled."
new "Update telah di batalkan."
new "Pembaharuan telah di batalkan."
# updater.rpy:189
old "Ren'Py Update"
new "Update Ren'Py."
new "Perbaharui Ren'Py."
# updater.rpy:195
old "Proceed"
@@ -1302,7 +1304,7 @@ translate indonesian strings:
# 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."
new "Live2D di Ren'py tidak 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"
@@ -1319,3 +1321,7 @@ translate indonesian strings:
# game/web.rpy:242
old "Preparing progressive download"
new "Persiapan unduh"
# web.rpy:194
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
new "Sebelum membangun renpy ke versi web,kamu perlu mengunduh RenpyWeb (Ren'Py's web support),unduh sekarang?"
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."
@@ -398,7 +398,7 @@ translate indonesian strings:
# screens.rpy:987
old "Mouse"
new "Mouse"
new "Tetikus"
# screens.rpy:990
old "Gamepad"
@@ -682,7 +682,7 @@ translate indonesian strings:
# screens.rpy:1233
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
new "## Kami harus menggunakan font yang mempunyai glyph BLACK RIGHT-POINTING SMALL TRIANGLE didalamnya."
new "## Kami harus menggunakan font yang mempunyai glyph BLACK RIGHT-POINTING SMALL TRIANGLE didalamnya."
new "[project_dir!q] esiste già. Si prega di scegliere un altro nome."
# gui7.rpy:341
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "Quale risoluzione dovrebbe usare il progetto? Sebbene Ren'Py possa scalare la finestra, questa sarà la dimensione iniziale, la dimensione alla quale i materiali dovrebbero venire disegnati, e la dimensione alla quale avranno la migliore definizione.\n\nLo standard di 1280x720 è un compromesso ragionevole."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "Quale risoluzione dovrebbe usare il progetto? Sebbene Ren'Py possa scalare la finestra, questa sarà la dimensione iniziale, la dimensione alla quale i materiali dovrebbero venire disegnati, e la dimensione alla quale avranno la migliore definizione.\n\nLo standard di [default_size[0]]x[default_size[1]] è un compromesso ragionevole."
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"
@@ -200,3 +197,7 @@ translate japanese strings:
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
new "unescape: ユニコード文字列中でのユニコードシンボルのエスケープを無効化し (default) として表示"
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "どの解像度をこのプロジェクトに使用しますか? Ren'py はウィンドウを拡大縮小することができますが、この設定は最初のウィンドウサイズ、描画される各アセットのサイズ、アセットが最もシャープに見えるサイズを決定します。\n\nデフォルトの 1280x720 が理にかなった推奨サイズです。"
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "どの解像度をこのプロジェクトに使用しますか? Ren'py はウィンドウを拡大縮小することができますが、この設定は最初のウィンドウサイズ、描画される各アセットのサイズ、アセットが最もシャープに見えるサイズを決定します。\n\nデフォルトの [default_size[0]]x[default_size[1]] が理にかなった推奨サイズです。"
# gui7.rpy:389
old "Creating the new project..."
@@ -667,7 +669,7 @@ translate japanese strings:
# ios.rpy:37
old "Creates an Xcode project corresponding to the current Ren'Py project."
new "現在の Ren'PY プロジェクトに対応する Xcode プロジェクトを作成します。"
new "現在の Ren'Py プロジェクトに対応する Xcode プロジェクトを作成します。"
# ios.rpy:38
old "Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes."
@@ -1027,7 +1029,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...."
@@ -1091,7 +1093,7 @@ translate japanese strings:
# 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 "Ren'Py は台詞の抽出を終了しました。抽出した台詞は、base ディレクトリーの、[persistent.dialogue_format] にあります。"
new "Ren'Py は台詞の抽出を終了しました。抽出した台詞は、ディレクトリーの base.[persistent.dialogue_format] にあります。"
# updater.rpy:75
old "Select Update Channel"
@@ -1197,9 +1199,6 @@ translate japanese strings:
old "PROJECTS:"
new "プロジェクト:"
translate japanese strings:
# android.rpy:304
old "Android: [project.current.display_name!q]"
new "Android: [project.current.display_name!q]"
@@ -1244,9 +1243,6 @@ translate japanese strings:
old "Extract Dialogue: [project.current.display_name!q]"
new "台詞の抽出: [project.current.display_name!q]"
translate japanese strings:
# dmgcheck.rpy:50
old "Ren'Py is running from a read only folder. Some functionality will not work."
new "Ren'Py が読み取り専用フォルダーで起動しています。使えない機能があります。"
@@ -1283,9 +1279,6 @@ translate japanese strings:
old "The height must be a number."
new "画面の高さは数字でなければなりません。"
translate japanese strings:
# editor.rpy:152
old "(Recommended) A modern and approachable text editor."
new "(推奨)モダンで親しみやすいテキストエディターです。"
@@ -1322,9 +1315,6 @@ translate japanese strings:
old "Actions"
new "アクション"
translate japanese strings:
# game/add_file.rpy:37
old "The file name may not be empty."
new "ファイル名が与えられていません。"
@@ -1701,9 +1691,6 @@ translate japanese strings:
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のソースコードを自動的に更新したいですか?"
@@ -1752,3 +1739,359 @@ translate japanese strings:
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' ファイルが作成されるのでこれを編集して振舞を設定できます。"
# game/android.rpy:35
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "WindowsでAndroidパッケージをビルドするには64-bit/x64 Java 8 Development Kitが必要です。JDKはJREとは異り、JDKなしでJavaを利用できます。\n\n{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}JDKのダウンロードとインストール{/a}を行い、Ren'Pyランチャーを再起動してください。"
# game/android.rpy:403
old "Universal APK"
new "Universal APK"
# game/android.rpy:453
old "List Devices"
new "デバイスリスト"
# game/android.rpy:457
old "Wi-Fi Debugging Pair"
new "Wi-Fiデバッグペア"
# game/android.rpy:461
old "Wi-Fi Debugging Connect"
new "Wi-Fiデバッグ接続"
# game/android.rpy:465
old "Wi-Fi Debugging Disconnect"
new "Wi-Fiデバッグ切断"
# game/android.rpy:564
old "Wi-Fi Pairing Code"
new "Wi-Fiペアリングコード"
# game/android.rpy:564
old "If supported, this can be found in 'Developer options', 'Wireless debugging', 'Pair device with pairing code'."
new "サポートされていれば、Androidの'Developer options', 'Wireless debugging', 'Pair device with pairing code'にあるでしょう。"
# game/android.rpy:571
old "Pairing Host & Port"
new "ペアリングホスト&ポート"
# game/android.rpy:587
old "IP Address & Port"
new "IP アドレス&ポート"
# game/android.rpy:587
old "If supported, this can be found in 'Developer options', 'Wireless debugging'."
new "サポートされていれば、Androidの'Developer options', 'Wireless debugging'にあるでしょう。"
# game/android.rpy:603
old "This can be found in 'List Devices'."
new "これは'デバイスリスト'で見つけられます。"
# game/androidstrings.rpy:16
old "I'm installing the bundle."
new "バンドルをインストールしています。"
# game/androidstrings.rpy:17
old "Installing the bundle appears to have failed."
new "バンドルのインストールに失敗しました。"
# game/androidstrings.rpy:19
old "Launching the app appears to have failed."
new "Appの起動に失敗しました。"
# game/androidstrings.rpy:32
old "How much RAM do you want to allocate to Gradle?\n\nThis must be a positive integer number."
new "どれほどのRAMをGradleに使用許可しますか?\n\nこれは正の整数でなければいけません。"
# game/androidstrings.rpy:33
old "The RAM size must contain only numbers."
new "RAMサイズには数値のみを含めてください。"
# game/androidstrings.rpy:43
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\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 "テストファイルのコンパイルにjavacを使用できませんでした。まだJava Development Kitをインストールしていないならば、\n\nhttps://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspotからダウンロードしてください。\n\nJDKはJREとは異ります。JDKなしでJavaを利用できます。動作するJDKなしでは続行できません。"
# game/androidstrings.rpy:44
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
new "あなとのコンピュータのJavaのバーションはAndroid SDKで唯一サポートされるJDK 8ではないようです。JDK 8をインストールする必要があれば、こちらからダウンロードできます。\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nJAVA_HOME環境変数を設定して異るバージョンのJavaも利用できます。"
# game/androidstrings.rpy:57
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 "アプリケーション署名キーを作成できます。このキーはサイドローディングとGoogle Play以外のストアのためのUniversal APKの作成に必要とされます。\n\nキーを作成しますか?"
# game/androidstrings.rpy:61
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 "bundle署名キーを作成できます。このキーはGoogle PlayにアップするAndroid App Bundle(AAB)のビルドに必要とされます。\n\nキーを作成しますか。"
# game/androidstrings.rpy:62
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 "bundle.keystoreのキーを作成します。\n\nこのファイルはバックアップしてください。紛失すると、アプリケーションを更新できなくなります。\n\nキーは安全に管理してください。悪意ある物がキーを入手すると、あなたのアプリケーションの偽バージョンを作成して、ユーザーのデータを盗難する可能性があります。\n\nbundle.keystoreのバックアップを作成し、安全な場所に保存していますか?"
# game/androidstrings.rpy:63
old "Could not create bundle.keystore. Is keytool in your path?"
new "bundle.keystoreを作成できません。keytoolはパスにありますか?"
# 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\nこれは gui/main_menu.png, gui/game_menu.png, and gui/window_icon.pngを上書きしませんが、ないファイルは作成します。{/size}"
# game/install.rpy:134
old "Install Live2D Cubism SDK for Native"
new "Live2D Cubism SDK for Native のインストール"
# game/install.rpy:147
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 "Ren'PyのLive2Dではweb, Androidのx86_64(エミュレーターおよびChrome OS含む)は未サポートであり、iOSプロジェクトでは手動で追加する必要があります。Live2DはRen'Pyの更新やAndroidサポートのインストール後に再インストールする必要があります。"
# game/install.rpy:154
old "Install Steam Support"
new "Steamサポートのインストール"
# game/install.rpy:163
old "Before installing Steam support, please make sure you are a {a=https://partner.steamgames.com/}Steam partner{/a}."
new "Steamサポートのインストール前に、あなたが{a=https://partner.steamgames.com/}Steamパートナー{/a}であることを確認してください。"
# game/install.rpy:175
old "Steam support has already been installed."
new "Steamサポートはインストール済みです。"
# 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 "Apple SiliconのiOSシミュレータには既知の問題があります。 x86_64またはiOSデバイスでテストしてください。"
# game/preferences.rpy:206
old "Daily check for update"
new "毎日更新をチェックする"
# game/preferences.rpy:210
old "Default theme"
new "デフォルトテーマ"
# game/preferences.rpy:212
old "Dark theme"
new "ダークテーマ"
# game/preferences.rpy:213
old "Custom theme"
new "カスタムテーマ"
# game/updater.rpy:109
old "• {a=https://www.renpy.org/doc/html/changelog.html}View change log{/a}"
new "• {a=https://ja.renpy.org/doc/html/changelog.html}更新履歴を閲覧する{/a}"
# game/updater.rpy:111
old "• {a=https://www.renpy.org/dev-doc/html/changelog.html}View change log{/a}"
new "• {a=https://ja.renpy.org/dev-doc/html/changelog.html}更新履歴を閲覧する{/a}"
# 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 "画像と音楽はプレイ中にダウンロードできます。'progressive_download.txt' ファイルが作成されるので、これを編集して振舞を設定できます。"
# 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 "Webプラットフォームでの現在の制限により大きな画像のロードはオーディオやフレームレートのグリッチと一般的なパフォーマンス低下をもたらします。ムービーは未サポートです。"
# game/web.rpy:338
old "There are known issues with Safari and other Webkit-based browsers that may prevent games from running."
new "Safariとその他Webkitベースのブラウザにはゲームの実行を妨げる既知の問題があります。"
# game/android.rpy:38
old "RAPT has been installed, but a bundle key hasn't been configured. Please create a new key, or restore bundle.keystore."
new "RAPTはインストールされていますが、bundleキーが設定されていません。新しくキーを作成するかbundle.keystoreを再保存してください。"
# game/android.rpy:40
old "Please select if you want a Play Bundle (for Google Play), or a Universal APK (for sideloading and other app stores)."
new "(Google Play用の)Play Bundleと(サイドローディングと他のAPPストア用の)Universal APKを選択してください。"
# game/android.rpy:55
old "Lists the connected devices."
new "接続されたデバイスをリストします。"
# game/android.rpy:56
old "Pairs with a device over Wi-Fi, on Android 11+."
new "Wi-Fi越しにAndroid 11+のデバイスとペアリングします。"
# game/android.rpy:57
old "Connects to a device over Wi-Fi, on Android 11+."
new "Wi-Fi越しにAndroid 11+のデバイスと接続します。"
# game/android.rpy:58
old "Disconnects a device connected over Wi-Fi."
new "Wi-Fiで接続しているデバイスを切断します。"
# game/android.rpy:60
old "Builds an Android App Bundle (ABB), intended to be uploaded to Google Play. This can include up to 2GB of data."
new "Google Playへのアップロード用にAndroid App Bundle(ABB)パッケージをビルドします。これには2GBまでのデータを含めます。"
# game/android.rpy:61
old "Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data."
new "サイドローディングとGoogle Play以外のストア用にUniversal APKパッケージをビルドします。これには2GBまでのデータを含めます。"
# game/android.rpy:398
old "Play Bundle"
new "Play Bundle"
# game/gui7.rpy:340
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "プロジェクトはどの解像度を使用しますか? Ren'Py ではウィンドウの拡大縮小ができますが、これはウィンドウの初期サイズであり、もっともアセットがシャープに描画されるサイズです。\n\nデフォルトの1280x720が合理的な妥当な案です。"
# game/android.rpy:60
old "Removes Android temporary files."
new "Android 一次ファイル削除"
# game/android.rpy:472
old "Clean"
new "クリーン"
# game/android.rpy:628
old "Cleaning up Android project."
new "Androidプロジェクトのクリーンアップ"
# game/androidstrings.rpy:43
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue."
new "javac を使用してテストファイルをコンパイルできませんでした。Java Development Kitをまだインストールしていないならば:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}からダウンロードしてください。\n\nJDK は JRE とは異り、JDKなしでJavaを利用できます。 'JavaSoft (Oracle) registry keys'.\n\nをインストールしたか確認してくあさい。JDK, I can't continue."
# game/androidstrings.rpy:64
old "I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place."
new "android.keystore と bundle.keystore を含むディレクトリーを開きました。それらをバックアップして、安全な場所に保管してください。"
# game/choose_directory.rpy:67
old "Select Projects Directory"
new "プロジェクトディレクトリーを選択してください"
# game/distribute.rpy:1690
old "Copying files..."
new "ファイルをコピーしています..."
# game/distribute_gui.rpy:195
old "Update old-game"
new "古いゲームの更新"
# game/editor.rpy:152
old "A modern editor with many extensions including advanced Ren'Py integration."
new "高度な Ren'Py 統合を含んだ拡張を伴うモダンなエディターです。"
# game/editor.rpy:153
old "A modern editor with many extensions including advanced Ren'Py integration.\n{a=jump:reinstall_vscode}Upgrade Visual Studio Code to the latest version.{/a}"
new "高度な Ren'Py 統合を含んだ拡張を伴うモダンなエディターです。\n{a=jump:reinstall_vscode}Visual Studio Codeを最新にアップグレードする。{/a}"
# game/editor.rpy:169
old "Visual Studio Code"
new "Visual Studio Code"
# game/editor.rpy:169
old "Up to 110 MB download required."
new "110 MBまでのダウンロードが必要です。"
# game/editor.rpy:182
old "A modern and approachable text editor."
new "モダンで親しみやすいテキストエディターです"
# game/editor.rpy:196
old "Atom"
new "Atom"
# game/editor.rpy:211
old "jEdit"
new "jEdit"
# game/editor.rpy:220
old "Visual Studio Code (System)"
new "Visual Studio Code (System)"
# game/editor.rpy:220
old "Uses a copy of Visual Studio Code that you have installed outside of Ren'Py. It's recommended you install the language-renpy extension to add support for Ren'Py files."
new "あなたがRen'Py外にインストールしたVisual Studio Codeのコピーを使用します。language-renpy拡張をインストールしてRen'Pyファイルのサポート追加を推奨します。"
# game/installer.rpy:10
old "Downloading [extension.download_file]."
new "[extension.download_file]をダウンロード中です"
# game/installer.rpy:11
old "Could not download [extension.download_file] from [extension.download_url]:\n{b}[extension.download_error]"
new "[extension.download_url]から[extension.download_file]をダウンロードできません。:\n{b}[extension.download_error]"
# game/installer.rpy:12
old "The downloaded file [extension.download_file] from [extension.download_url] is not correct."
new "[extension.download_url]からダウンロードされた[extension.download_file]が正しくありません。"
# game/interface.rpy:124
old "[interface.version]"
new "[interface.version]"
# game/preferences.rpy:106
old "General"
new "一般"
# game/preferences.rpy:107
old "Options"
new "設定"
# game/preferences.rpy:246
old "Launcher Theme:"
new "ランチャーテーマ:"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
new "カスタムテーマ作成情報は {a=https://www.renpy.org/doc/html/skins.html}Ren'Pyのドキュメント{/a}で読めます。"
# game/preferences.rpy:273
old "Install Libraries:"
new "ライブラリインストール:"
# game/preferences.rpy:301
old "Clean temporary files"
new "一時ファイル削除"
# game/preferences.rpy:308
old "Cleaning temporary files..."
new "一時ファイルを削除しています..."
# game/preferences.rpy:338
old "{#in language font}Welcome! Please choose a language"
new "{font=SourceHanSansLite.ttf}言語を選択してください{/font}"
# game/preferences.rpy:373
old "{#in language font}Start using Ren'Py in [lang_name]"
new "{font=SourceHanSansLite.ttf}[lang_name]でRen'Pyの使用を開始します{/font}"
# game/project.rpy:280
old "This may be because the project is not writeable."
new "これはおそらくプロジェクトが書き込みではないためです"
# game/translations.rpy:391
old "Language (or None for the default language):"
new "Language (デフォルト言語はNoneです)"
# game/updater.rpy:64
old "Release (Ren'Py 8, Python 3)"
new "Release (Ren'Py 8, Python 3)"
# game/updater.rpy:65
old "Release (Ren'Py 7, Python 2)"
new "Release (Ren'Py 7, Python 2)"
# game/updater.rpy:69
old "Prerelease (Ren'Py 8, Python 3)"
new "Prerelease (Ren'Py 8, Python 3)"
# game/updater.rpy:70
old "Prerelease (Ren'Py 7, Python 2)"
new "Prerelease (Ren'Py 7, Python 2)"
# game/updater.rpy:77
old "Nightly (Ren'Py 8, Python 3)"
new "Nightly (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly (Ren'Py 7, Python 2)"
new "Nightly (Ren'Py 7, Python 2)"
# game/web.rpy:344
old "This feature is not supported in Ren'Py 8."
new "この機能はRen'Py 8ではサポートされていません。"
# game/web.rpy:344
old "We will restore support in a future release of Ren'Py 8. Until then, please use Ren'Py 7 for web support."
new "Ren'Py 8 の将来のリリースでサポートを復活させます。それまではRen'Py 7 をウェブプラットフォームに使用ください。"
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## itch.io project に関連付けられたユーザー名とプロジェクト名。二つの名前はスラッシュで分けてください。"
translate japanese strings:
# options.rpy:196
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 アプリケーション を含む文字列を設定します。必ず Apple が発行したあなたの ID に変更してください。"
translate japanese strings:
# options.rpy:81
old "## Between screens of the game menu."
new "## ゲームメニューのスクリーンを切り替える時のトランジション。"
translate japanese strings:
# 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 "## About(バージョン情報)スクリーンに表示されるテキスト。トリプルクオートの間にテキストを入力します。段落の間には空行を挿入して下さい。"
# 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 "## これらの3つの変数は、特に、どのミキサーがデフォルトでプレーヤーに表示されるかを制御します。これらのいずれかをFalseに設定すると、適切なミキサーが非表示になります。"
new "[project_dir!q]는 이미 존재합니다. 다른 프로젝트 이름을 선택하세요."
# game/gui7.rpy:358
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "프로젝트에서 어떤 해상도를 사용하나요? 렌파이가 창을 위아래로 확장 할 수 있지만, 이것은 창의 초기 크기, 에셋이 그려지는 크기, 애셋이 가장 선명하게 될 크기입니다.\n\n1280x720의 기본값은 적절한 절충안입니다."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "프로젝트에서 어떤 해상도를 사용하나요? 렌파이가 창을 위아래로 확장 할 수 있지만, 이것은 창의 초기 크기, 에셋이 그려지는 크기, 애셋이 가장 선명하게 될 크기입니다.\n\n[default_size[0]]x[default_size[1]]의 기본값은 적절한 절충안입니다."
# game/gui7.rpy:358
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "[project_dir!q] sudah wujud. Sila pilih nama projek yang lain."
# gui7.rpy:358
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "Peleraian apakah yang projek ini patut guna? Walaupun Ren'Py boleh menyesuai naikkan dan menyesuai turunkan saiz tetingkap, ini ialah saiz awal tetingkap, saiz di mana aset perlu dilukis, dan saiz di mana aset menjadi paling tajam.\n\nNilai lalai 1280x720 ialah kompromi yang munasabah."
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
new "Peleraian apakah yang projek ini patut guna? Walaupun Ren'Py boleh menyesuai naikkan dan menyesuai turunkan saiz tetingkap, ini ialah saiz awal tetingkap, saiz di mana aset perlu dilukis, dan saiz di mana aset menjadi paling tajam.\n\nNilai lalai [default_size[0]]x[default_size[1]] ialah kompromi yang munasabah."
# gui7.rpy:358
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Ailedfay otay avesay creenshotsay asay %say."
# renpy/common/00keymap.rpy:318
# renpy/common/00keymap.rpy:322
old "Saved screenshot as %s."
new "Avedsay creenshotsay asay %say."
# renpy/common/00library.rpy:195
# renpy/common/00library.rpy:211
old "Skip Mode"
new "Kipsay Odemay"
# renpy/common/00library.rpy:281
# renpy/common/00library.rpy:297
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 "oadlay <otslay>: oadslay hetay amegay omfray otslay"
# renpy/common/00console.rpy:797
# renpy/common/00console.rpy:819
old "save <slot>: saves the game in slot"
new "avesay <otslay>: avessay hetay amegay inay otslay"
# renpy/common/00console.rpy:808
# renpy/common/00console.rpy:830
old "reload: reloads the game, refreshing the scripts"
new "eloadray: eloadsray hetay amegay, efreshingray hetay criptssay"
# renpy/common/00console.rpy:816
# renpy/common/00console.rpy:838
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"
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.