OneShot

OneShot

View Stats:
 This topic has been pinned, so it's probably important
GIR  [developer] Nov 26, 2022 @ 10:22pm
How to create a Fan Translation
This is a guide on how to create a localization for OneShot. With these instructions pretty much anyone should be able to create a localization for OneShot all on their own.

Decide on a language code
This should be 2 to 5 characters long, preferably lowercase. Also, it is recommended you use the existing ISO 639-1 language code for your language if it already exists, since this is what the game will read from the computer (or steam) to determine what language to use by default. For example, for Dutch the language code would be "nl". You can see a list of most language codes here: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

Add your language to "language_fonts.ini"
Located in the "Languages" folder, this is the main file the game uses to decide what languages actually exist for the game. It's also where you define what font the game will use. For languages that use the Latin alphabet, you should be fine using "Terminus (TTF)", but if your language has special characters not supported by the existing fonts, you'll need to add your font to the "Fonts" folder. Any true type font (.ttf) should work, and the game will automatically scan this folder on start and load the fonts here.

The line you add here will be in the format of "{language_code}={font_name}"

Add your language to the internal "language_fonts.ini" and "language_sizes.ini"
These files are located in the "Languages/internal" folder. They're in a similar format to the main "language_fonts.ini", but these files specify what font and font size the Input settings menu uses. Just like with the other file, the font you specify here needs to be in the "Fonts" folder.

The line you add to language_fonts.ini will be in the format of "{language_code}={font_name}", and in languages_sizes.ini will be in the format of "{language_code}={font_size}"

Create the main .po file for your language
In the "Languages" folder, you'll need to create a po file for your language, with the name formatted like "{language_code}.po" (for example, "nl.po" for Dutch). I'd recommend copying another one of the existing .po files for this and then renaming it, like the "ja.po" file.

This file contains the majority of the text in the game that needs to be translated. It acts as a string map, mapping the original English strings in the game to the target language's strings. The game reads this .po file as is, so you don't need to worry about doing anything to compile it to a .loc file (which is how the game used to handle localizations). For editing this file I'd recommend either using poedit or a simple text editor like notepad++. "msgid" is the original english string, and "msgstr" is the translation for it.

Create the internal .po file for your language
In the "Languages/internal" folder, you'll need to create another po file for your language, with the name formatted like "{language_code}.po" (for example, "nl.po" for Dutch). Like before, I'd recommend copying one of the existing files for this, like the "ja.po" file.

Unlike the main .po file, I would recommend NOT using poedit for this file, but just using a simple text editor like notepad++. This is because the game expects the strings in this file to be in a very specific order, and poedit has a habit of adding an empty msgid/msgstr pair to the beginning of the file to store some metadata. So do not use poedit for this file.

Create the safe text files for your language
In the "Languages/safetext" folder, you'll find 2 txt files, along with many subfolders for individual languages. These 2 txt files, "safe1.txt" and "safe2.txt" contain the text that's used to create the document that gets placed in the Documents folder for the safe puzzle in the Barrens. "safe1.txt" is used on the very first run, and "safe2.txt" is used on runs after the first (when you can play solstice).

For the language you are making a localization for, make a folder in the "Languages/safetext" folder named "{language_code}" (for example, the dutch folder would be named "nl", and the path it would have in the game's main folder would be "Languages/safetext/nl"). Create 2 txt files in this folder, "safe1.txt" and "safe2.txt". You can model them after the English ones in the base folder. Note that for both of these files, the safe code is just appended to the end of the text, so try to word the last sentence so the safe code can appear at the end.

For safe1.txt, a lot of the text is intentionally obscured. This effect is created https://lingojam.com/ZalgoText , which is just a site that creates zalgo text. Also, to aid in translating safe1.txt, here's an un-zalgo'd version of it.

Dear {player_name}

This is my first attempt to send a message to you, and I'm afraid I must make it brief.

I have left you a journal, part of which is written in a language that you won't be able to understand at first.

However, there will come a time where you will obtain a translation to progress... read it and you will know what to do.

I have also left you a mask, because I know your messiah will need it.

Look for a metal safe in the quarry to the east, somewhere between the ocean and the lookout point.

The code you need is {CODE}

Image files that need to be localized

First, I'll provide a list of the image files that should be localized, including the path they should be located in to appear in the target language.

Wallpapers:
Wallpaper/{language_code}/save_unix.png
Wallpaper/{language_code}/save_w32.bmp

NPCs:
Graphics/Characters/{language_code}/green_npc_misc.png (if you want to translate the "BAA" on the one ram in the secret ram club)

Solstice Password files:
Graphics/Fogs/_/scenario1/{language_code}/pw1.png
Graphics/Fogs/_/scenario1/{language_code}/pw2.png
Graphics/Fogs/_/scenario1/{language_code}/pw3.png
Graphics/Fogs/_/scenario1/{language_code}/pw4.png
Graphics/Fogs/_/scenario2/{language_code}/pw1.png
Graphics/Fogs/_/scenario2/{language_code}/pw2.png
Graphics/Fogs/_/scenario2/{language_code}/pw3.png
Graphics/Fogs/_/scenario2/{language_code}/pw4.png
(scenario1 is used for after beating your first loop of the game, scenario2 is a set of similar files but are meant to be used if you're on a NG+ run and at the countdown door in refuge, originally meant for people waiting for the solstice countdown to end)

Item Icons:
Graphics/Icons/{language_code}/item_red_button.png
Graphics/Icons/{language_code}/item_red_button_taped.png
Graphics/Icons/{language_code}/item_red_magnetized_button.png
Graphics/Icons/{language_code}/item_red_tin.png
Graphics/Icons/{language_code}/item_red_youtried.png
(these need to be changed only if you want to change the text on the elevator "GROUND" button to something else in the target language)

Journal Pages:
Graphics/Journal/{language_code}/
All the images in this folder need to be localized. They also need to be saved specifically as 24bit bitmaps, with NO color space information saved.

Pictures:
Graphics/Pictures/{language_code}/book_clover.png
Graphics/Pictures/{language_code}/book_dice.png
Graphics/Pictures/{language_code}/book_fauna.png
Graphics/Pictures/{language_code}/book_phosphor1.png
Graphics/Pictures/{language_code}/book_phosphor2.png
Graphics/Pictures/{language_code}/book_phosphor3.png
Graphics/Pictures/{language_code}/book_phosphor4.png
Graphics/Pictures/{language_code}/book_prophet.png
Graphics/Pictures/{language_code}/book_prophetbot.png
Graphics/Pictures/{language_code}/book_sketch.png
Graphics/Pictures/{language_code}/cg_desktop.png (only if you want to translate the "MENU" in the bottom left)
Graphics/Pictures/{language_code}/cg_map.png (also optional)
Graphics/Pictures/{language_code}/choice0.png
Graphics/Pictures/{language_code}/choice1.png
Graphics/Pictures/{language_code}/choice2.png
Graphics/Pictures/{language_code}/instruction1.png
Graphics/Pictures/{language_code}/instruction2.png
Graphics/Pictures/{language_code}/instruction3.png
Graphics/Pictures/{language_code}/instruction4.png
Graphics/Pictures/{language_code}/pj_portal.png

Tilesets:
Tilesets/{language_code}/red_alley.png
Tilesets/{language_code}/red_in.png

For many of the pictures (like the ones in the Pictures folder, or the Journal pages), having the source images will be very helpful in creating localized versions of these images. You can access the source files for these images in the "loc_files" beta branch, which can be accessed via the password "localization". The files will appear in the game files in the "Localization Images" folder. I recommend only using this beta branch for grabbing these files, since this beta branch won't contain anything else. Also these files are .psd or .xcf files, so I'd recommend using photoshop or GIMP to open and edit them.

Packaging and Distribution

I'm not actually very familiar with how people distribute fanmade mods or patchs for games these days, but Clickteam's Patch Maker might be a good start for figuring out how to make a patch for your language, once you've finished making your changes.

And once you have your translation complete and packed up, you can then distribute it via some file-sharing service (like google drive or something). Also, please ONLY distribute the files you've modified, and not the entire game directory containing the base game.

If you have any questions about the process feel free to ask in the thread below!
Last edited by GIR; Nov 26, 2022 @ 10:29pm
< >
Showing 1-15 of 20 comments
/home/cavej376 Nov 26, 2022 @ 10:37pm 
but what if i want to make slight variation/edit of existing language? how should i do it?
GIR  [developer] Nov 26, 2022 @ 10:41pm 
Originally posted by /home/cavej376:
but what if i want to make slight variation/edit of existing language? how should i do it?
The instructions above should suffice.
GiAnMMV Nov 27, 2022 @ 2:45am 
In the "safe1.txt" file there is another line between the first and the second one, saying "This is The Author" or something similar.
GIR  [developer] Nov 27, 2022 @ 9:43am 
Originally posted by GiAnMMV:
In the "safe1.txt" file there is another line between the first and the second one, saying "This is The Author" or something similar.
That line unobscured is "This is my first attempt to send a message to you, and I'm afraid I must make it brief.", as listed above. There is no line saying "this is the author".
Szardex Nov 27, 2022 @ 11:21am 
Will Polish language be added ?
GIR  [developer] Nov 27, 2022 @ 12:05pm 
Originally posted by Szardex:
Will Polish language be added ?
If someone makes it they can post a link to it in these forums.
GiAnMMV Nov 27, 2022 @ 2:21pm 
Originally posted by GIR:
Originally posted by GiAnMMV:
In the "safe1.txt" file there is another line between the first and the second one, saying "This is The Author" or something similar.
That line unobscured is "This is my first attempt to send a message to you, and I'm afraid I must make it brief.", as listed above. There is no line saying "this is the author".
I'm talking about this one, above the one you mean:
https://imgur.com/a/x2jqVdM
Last edited by GiAnMMV; Nov 27, 2022 @ 2:30pm
GIR  [developer] Nov 27, 2022 @ 6:10pm 
Originally posted by GiAnMMV:
Originally posted by GIR:
That line unobscured is "This is my first attempt to send a message to you, and I'm afraid I must make it brief.", as listed above. There is no line saying "this is the author".
I'm talking about this one, above the one you mean:
https://imgur.com/a/x2jqVdM

Yeah that's just the line "This is my first attempt to send a message to you,", with a few linebreaks added due to corruption.
GiAnMMV Nov 27, 2022 @ 10:18pm 
Originally posted by GIR:
Originally posted by GiAnMMV:
I'm talking about this one, above the one you mean:
https://imgur.com/a/x2jqVdM

Yeah that's just the line "This is my first attempt to send a message to you,", with a few linebreaks added due to corruption.
That can't be, removing all the Zalgo stuff there are the letters "T" and "A" uppercase, missing in that phrase:
https://imgur.com/a/EjL3yVI
Last edited by GiAnMMV; Nov 27, 2022 @ 10:28pm
GIR  [developer] Nov 28, 2022 @ 12:32am 
Originally posted by GiAnMMV:
Originally posted by GIR:

Yeah that's just the line "This is my first attempt to send a message to you,", with a few linebreaks added due to corruption.
That can't be, removing all the Zalgo stuff there are the letters "T" and "A" uppercase, missing in that phrase:
https://imgur.com/a/EjL3yVI
That's literally what it was. The parts with heavier corruption had more text removed/changed.

The above English safetext transcript is the only full transcript that has ever existed of the safetext document.
GiAnMMV Nov 28, 2022 @ 1:11am 
Originally posted by GIR:
Originally posted by GiAnMMV:
That can't be, removing all the Zalgo stuff there are the letters "T" and "A" uppercase, missing in that phrase:
https://imgur.com/a/EjL3yVI
That's literally what it was. The parts with heavier corruption had more text removed/changed.

The above English safetext transcript is the only full transcript that has ever existed of the safetext document.
Ok, then I think we should change the Italian file because we translated thinking the phrase was that one.
starsaway Mar 26, 2023 @ 5:41am 
Originally posted by Szardex:
Will Polish language be added ?

During the Easter break I will see if I can commit to translating it. If so, I will share it in the forum!
carden Jun 6, 2023 @ 9:50am 
Originally posted by Astoria:
Originally posted by Szardex:
Will Polish language be added ?

During the Easter break I will see if I can commit to translating it. If so, I will share it in the forum!
I'll gladly help you out if you're still doing that :)
JohnMeister Aug 6, 2023 @ 3:54pm 
Could you maybe tell me the names of the fonts you used in the following images:

- the map (cg_map.png)
- final choice (choice0.png)
- the blackboard inside the library (red_in.png)
- the secret ram club banner (red_alley.png)

Those are not included in the psd files.
Last edited by JohnMeister; Aug 6, 2023 @ 3:58pm
GIR  [developer] Aug 6, 2023 @ 4:23pm 
Originally posted by JohnMeister:
Could you maybe tell me the names of the fonts you used in the following images:

- the map (cg_map.png)
- final choice (choice0.png)
- the blackboard inside the library (red_in.png)
- the secret ram club banner (red_alley.png)

Those are not included in the psd files.
Most of those aren't fonts and are just hand written.
As for the final choice graphic, I don't think I actually have a file that has the non-rasterized text data in it anymore. So you'll just need to pick a similar font or something. It's not like the font that was used there shows up anywhere else so there shouldn't be any real issues with making it match style-wise.
< >
Showing 1-15 of 20 comments
Per page: 1530 50