Estimated reading time: 7 minute(s)
I am in the midst of a project to review about 30 freeware visual novels that were officially translated from Japanese to English between 2005 and 2008. Despite using Linux, I usually run the Windows versions of these visual novels. They generally run without issue on Linux with the help of the Wine compatibility layer. However, three of the visual novel translations have a special requirement – they only run in a Japanese language environment. These three visual novels were built with the KiriKiri scripting engine. After some research, trial, and error, I was able to configure a Japanese environment to run all three visual novels on Linux. I did this with the help of graphical tools for managing Wine configurations on Linux. In this article, I will list the steps that I undertook in three separate Wine tools: PlayOnLinux, Lutris, and Bottles.
Before continuing, I note that the scope of this article is limited to discussing the specific challenge that I had and the solutions I implemented to overcome it. My article does provide general guidance for configuring language environments in three different graphical tools for Wine, but it is not a general purpose guide. However, my experience may be directly applicable to certain challenges, and may provide some guidance for setting environment variables in PlayOnLinux, Lutris, and Bottles generally.
Finally, do note that I am not the most technical user or system administrator – and some of my explanations of key concepts may not be the best possible explanations available. I do, however, link to relevant resources for people who want to read more about how Wine and language variables work.
Understanding the Terms
Wine is a compatibility layer for Linux, MacOS, and BSD that allows these operating systems to run certain Windows programs. In recent times, Valve, which is the company behind the largest computer game distribution platform, Steam, forked Wine to create Proton in order to make running video games for Windows on Linux easier.
Wine is a command-line tool in its raw form. That means it is managed from the terminal. However, there are several tools that provide easy-to-use graphical interfaces to help non-technical users (I fall into this category with respect to Wine) manage their Wine prefixes and run games and other Windows programs in a normie-friendly way. The story of my efforts in this article relates to three of these tools.
(Aside: Note that Steam itself offers ways to configure its fork of Wine, Proton, with a graphical interface. However, this article does not touch on Steam.)
The first tool that we will look at is PlayOnLinux. PlayOnLinux allows users to create virtual Windows drives through easy-to-use menus. Windows programs can be installed inside these drives. I will discuss PlayOnLinux version 4 in this article. It is slated to be superseded by Phoenicis PlayOnLinux, but I do not have much experience with the still-in-progress newer version. Do note that PlayOnLinux has a Mac counterpart called PlayOnMac, but I have never used PlayOnMac.
Lutris is a multi-purpose tool for gaming on Linux. In this article, I will look at how to use it as a Wine front-end. However, Lutris is also a general-purpose game-launcher for Linux that can manage all games installed on a system (as well as games from the user’s libraries on Steam, GOG, Epic, and Humble Bundle) from one place.
Bottles is a newer utility for running Windows programs on Linux. It allows the user to set up a wineprefix (specially configured WINE environment) in a container, or “bottle” in this case. Multiple programs can be installed in a single bottle. The developer of Bottles providesa better explanation than I can and explaines briefly how Bottles differs from Lutris for running games. Bottles provides for sandboxing (in its Flatpak version) and version history.
Before continuing, I will succinctly explain what I needed to accomplish.
My goal was to run the following three Windows visual novels on Linux:
(Note: The Midsummer Haze translation is a patch for the original Japanese game rather than the full game file itself. This presented additional challenges unrelated to the language environment issue that I will cover when I review that visual novel. Collage and Summer, Cicadas, and the Girl are both full English language versions of the original Japanese games instead of patches.)
Each if these games requires a Japanese environment to run.
My goal was to run all three of these visual novels on Linux. With the exception of Midsummer Haze (see above note), I had no concerns about the fact that they are all Windows programs. My sole concern related to configuring a Japanese environment for them to run.
General Locale Notes
Before setting up environment variables, you must first make sure that the locale that you need to configure is enabled on your system. In the case of my main desktop, which runs Manjaro Linux, I had to enable the specific Japanese locale – “ja_JP.UTF-8” – that I needed to run my games. See the guide I used here. That locale was enabled by default on my old desktop, which runs Bodhi Linux.
(Note: In theory, I could change the entire language of my system, but for obvious reasons, I prefer to modify it only for specific programs.)
Locale Environment Variables
The GNU website provides a clear and concise explanation of locale environment variables, including the ones that I will demonstrate below. Do note that depending on your specific need, you may have a reason to use different locale environment variables (the above link has a list with explanations of each) than what I needed to make the pair of visual novels at issue run properly.
I first learned how to configure a Japanese locale in a WINE front end for PlayOnLinux. I credit the following article from the Friendly GNU/Linux Thread/Website.
Games (and other software) in PlayOnLinux are installed in virtual drives. However, users can set different launch options for different programs installed in virtual drives (note that I follow the general guidance to install each program in its own virtual drive). First, you will need to enter the Configure menu from the PlayOnLinux home screen.
From the Configuration menu, highlight the program that needs a special locale setting. From there, go into the “Miscellaneous” tab and find a text field for “command to exec before running the program.” See below for an example.
NatsuSemi (Summer, Cicadas, and the Girl) needs a Japanese runtime environment to run. In order to make this work, I inserted the Japanese LANG variable into “command to exec before running the program.” Here, the variable is LANG=“ja_JP.UTF-8. A different variable may be required for different use cases, and note that the process is a bit different in Lutris and Bottles (see below).
Before I continue, I again note that PlayOnLinux has a counterpart for MacOS called PlayOnMac. While I assume that it is possible to achieve the same result for setting program-specific locales in PlayOnMac, I do not know how similar the process would be to the process for PlayOnLinux.
After installing your game on Lutris, you will need to go into its configuration options (you can access the config options from the right-click menu for the game in question). On the config menu, navigate to “System Options” and find the field for Environment Variables.
As you can see in the above screenshot, there are two fields to set for custom environment variables: Key and Value.
Here, I had to set the key as LC_ALL. The LC_ALL variable is designed to override category-specific environment variables in a particular program. Refer to GNU.org for a better explanation along with a list of other variables related to locale.
The process for configuring a Japanese language environment in Bottles is almost identical to the process I used in Lutris.
Once the program that needs a specific language environment is installed in a bottle, navigate to the preferences for the bottle and find the environment variables tab.
Setting the Japanese environment variable for a bottle is functionally the same as doing so for a program Lutris, albeit the user interface is a bit different. First, Bottles will ask you to enter your new variable. This is equivalent to the “Key” field in Lutris.
In my case, I needed LC_ALL.
This concludes my brief guide for changing the locale for specific programs in PlayOnLinux, Lutris, and Bottles. Do note that this guide is not intended to be comprehensive. My purpose was to detail how I made specific visual novels that required a Japanese runtime environment work in the three WINE front-ends. My guide shows generally how to configure environment variables in Lutris and Bottles and commands to run before executing a program in PlayOnLinux, but what may be needed for a different game or objective may be different than what I needed for these particular visual novels.
If you have any recommendations for improving the guide, do let me know through our contact page. I would be happy to credit anyone with ideas for clarifying the information herein. However, if you have a suggestion, please bear in mind that I am not expanding the scope of this article.