如何在Linux(NixOS)上运行素晴日(汉化版)

2026-09-24

设备

  1. x64 NixOS设备

起因

想在NixOS上推旮旯,但是我系统用得en-us的locale,你这个游戏呢又是ja-jp的locale,虽然你的汉化很好的弥补了这一点,但是用steam proton设置 HOST_LC_ALL=ja_JP.UTF-8 LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 弹窗报乱码,并且无法启动。用bottles试了也不行,使用AI各种改wine的注册表也是更加头大。随后又尝试了在bottles中运行locale emulator等各种方案,总之,报错和乱码似乎阴魂不散。

正式解决流程

下载资源

到处都可以下载资源,总之一定要找不用locale emulator的,总之我是找到了某某大学的高数教程最后还是能用的。但是不得不吐槽一句,牛魔整个游戏资源藏的比暗网都深,怪不得大家说不会找资源了。

wsl@office ~/a/SBHB> ls
高等数学同济版第218讲.7z

解压

我使用的资源大概需要两个软件合作进行解压,一个是7z(p7zip),另外一个是Paranoia File & Text Encryption,其中后者在Linux上需要Java运行时。

  1. 下载(Paranoia File & Text Encryption)[] Java版本,Java运行时以及7z。(此处略过)
  2. 使用指令进行解压,参考如下:
wsl@office ~/a/SBHB> 7z x 高等数学同济版第218讲.7z

7-Zip [64] 17.05 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28
p7zip Version 17.05 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,12 CPUs x64)

Scanning the drive for archives:
1 file, 5021136169 bytes (4789 MiB)

Extracting archive: 高等数学同济版第218讲.7z
--
Path = 高等数学同济版第218讲.7z
Type = 7z
Physical Size = 5021136169
Headers Size = 463
Method = LZMA2:25
Solid = +
Blocks = 1

Everything is Ok                                                             

Files: 8
Size:       5032428211
Compressed: 5021136169
wsl@office ~/a/SBHB> ls
7.24上午函数的定义域及对应法则(三).mp4      7.27上午分段函数、绝对值函数、函数有界性(一).mp4  7.30上午基本初等函数之指数函数和对数函数(二).mp4  高等数学同济版第218讲.7z
7.24上午集合、幂与对数、解方程(一).mp4      7.30上午基本初等函数之三角函数(三).mp4
7.27上午函数奇偶性、单调性、周期性(二).mp4  7.30上午基本初等函数之常数函数和幂函数(一).mp4    宋浩高等数学直播课回放.mov
wsl@office ~/a/SBHB> wget https://paranoiaworks.mobi/download/files/SSEFilePC.zip
--2026-09-23 17:24:19--  https://paranoiaworks.mobi/download/files/SSEFilePC.zip
Resolving paranoiaworks.mobi (paranoiaworks.mobi)... 176.102.64.64, 46.36.36.153, 46.36.36.152, ...
Connecting to paranoiaworks.mobi (paranoiaworks.mobi)|176.102.64.64|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18796559 (18M) [application/zip]
Saving to: ‘SSEFilePC.zip’

SSEFilePC.zip                                         100%[=========================================================================================================================>]  17.93M  3.62MB/s    in 4.9s    

2026-09-23 17:24:25 (3.62 MB/s) - ‘SSEFilePC.zip’ saved [18796559/18796559]

wsl@office ~/a/SBHB> unzip SSEFilePC.zip 
Archive:  SSEFilePC.zip
   creating: PEC - Standalone Recovery Record App/
  inflating: PEC - Standalone Recovery Record App/!START-HERE.txt  
  inflating: PEC - Standalone Recovery Record App/DESIGN.md  
  inflating: PEC - Standalone Recovery Record App/LICENSE.txt  
  inflating: PEC - Standalone Recovery Record App/README.md  
  inflating: PEC - Standalone Recovery Record App/RECOVERY-FORMAT.html  
  inflating: PEC - Standalone Recovery Record App/THIRD-PARTY-NOTICES.txt  
   creating: PEC - Standalone Recovery Record App/linux-arm64/
  inflating: PEC - Standalone Recovery Record App/linux-arm64/GUI Version.txt  
  inflating: PEC - Standalone Recovery Record App/linux-arm64/pec  
   creating: PEC - Standalone Recovery Record App/linux-x64/
  inflating: PEC - Standalone Recovery Record App/linux-x64/GUI Version.txt  
  inflating: PEC - Standalone Recovery Record App/linux-x64/pec  
   creating: PEC - Standalone Recovery Record App/macos-universal/
  inflating: PEC - Standalone Recovery Record App/macos-universal/GUI Version.txt  
  inflating: PEC - Standalone Recovery Record App/macos-universal/pec  
  inflating: PEC - Standalone Recovery Record App/macos-universal/pec-1.1.0.pkg  
   creating: PEC - Standalone Recovery Record App/windows-arm64/
  inflating: PEC - Standalone Recovery Record App/windows-arm64/GUI Version.txt  
  inflating: PEC - Standalone Recovery Record App/windows-arm64/pec.exe  
   creating: PEC - Standalone Recovery Record App/windows-x64/
  inflating: PEC - Standalone Recovery Record App/windows-x64/pec-gui.exe  
  inflating: PEC - Standalone Recovery Record App/windows-x64/pec.exe  
   creating: S.S.E. File Encryptor for PC/
   creating: S.S.E. File Encryptor for PC/License/
  inflating: S.S.E. File Encryptor for PC/License/LICENSE.txt  
  inflating: S.S.E. File Encryptor for PC/License/THIRD-PARTY-NOTICES.txt  
  inflating: S.S.E. File Encryptor for PC/blake3mt.dll  
  inflating: S.S.E. File Encryptor for PC/jnidispatch.dll  
  inflating: S.S.E. File Encryptor for PC/libblake3mt.dylib  
  inflating: S.S.E. File Encryptor for PC/libblake3mt.so  
  inflating: S.S.E. File Encryptor for PC/libpwncenc.dylib  
  inflating: S.S.E. File Encryptor for PC/libpwncenc.so  
  inflating: S.S.E. File Encryptor for PC/libpwsr.dylib  
  inflating: S.S.E. File Encryptor for PC/libpwsr.so  
  inflating: S.S.E. File Encryptor for PC/pwncenc.dll  
  inflating: S.S.E. File Encryptor for PC/pwsr.dll  
  inflating: S.S.E. File Encryptor for PC/pwsr_model.bin  
  inflating: S.S.E. File Encryptor for PC/ssefenc.jar  
  inflating: S.S.E. File Encryptor for PC/ssefencgui.jar  
  inflating: S.S.E. File Encryptor for PC/~USAGE.txt  
wsl@office ~/a/SBHB> ls
 7.24上午函数的定义域及对应法则(三).mp4       7.27上午分段函数、绝对值函数、函数有界性(一).mp4   7.30上午基本初等函数之指数函数和对数函数(二).mp4   SSEFilePC.zip
 7.24上午集合、幂与对数、解方程(一).mp4       7.30上午基本初等函数之三角函数(三).mp4            'PEC - Standalone Recovery Record App'                宋浩高等数学直播课回放.mov
 7.27上午函数奇偶性、单调性、周期性(二).mp4   7.30上午基本初等函数之常数函数和幂函数(一).mp4    'S.S.E. File Encryptor for PC'                        高等数学同济版第218讲.7z
wsl@office ~/a/SBHB> cd S.S.E.\ File\ Encryptor\ for\ PC/
wsl@office ~/a/S/S.S.E. File Encryptor for PC> ls
 blake3mt.dll      libblake3mt.dylib   libpwncenc.dylib   libpwsr.dylib   License       pwsr.dll         ssefencgui.jar  '~USAGE.txt'
 jnidispatch.dll   libblake3mt.so      libpwncenc.so      libpwsr.so      pwncenc.dll   pwsr_model.bin   ssefenc.jar
 wsl@office ~/a/S/S.S.E. File Encryptor for PC> cd ..
wsl@office ~/a/SBHB> ls
 7.24上午函数的定义域及对应法则(三).mp4
 7.24上午集合、幂与对数、解方程(一).mp4
 7.27上午函数奇偶性、单调性、周期性(二).mp4
 7.27上午分段函数、绝对值函数、函数有界性(一).mp4
 7.30上午基本初等函数之三角函数(三).mp4
 7.30上午基本初等函数之常数函数和幂函数(一).mp4
 7.30上午基本初等函数之指数函数和对数函数(二).mp4
'PEC - Standalone Recovery Record App'
'S.S.E. File Encryptor for PC'
 SSEFilePC.zip
 宋浩高等数学直播课回放.mov
 高等数学同济版第218讲.7z
wsl@office ~/a/SBHB> mv 宋浩高等数学直播课回放.mov 宋浩高等数学直播课回放.enc
wsl@office ~/a/SBHB> java -Xmx4g -jar ./S.S.E.\ File\ Encryptor\ for\ PC/ssefenc.jar 宋浩高等数学直播课回放.enc MSYL
S.S.E. File Encryptor for PC - command line [version 17.3.4]
(https://paranoiaworks.mobi)
(C) Paranoia Works 2026


Decrypting (AES-256): 100%
Input File: /home/wsl/apps/SBHB/宋浩高等数学直播课回放.enc
Output Folder: /home/wsl/apps/SBHB/美好的每一天 ~不连续的存在~

Completed: OK
wsl@office ~/a/SBHB> ls
 7.24上午函数的定义域及对应法则(三).mp4            'PEC - Standalone Recovery Record App'
 7.24上午集合、幂与对数、解方程(一).mp4            'S.S.E. File Encryptor for PC'
 7.27上午函数奇偶性、单调性、周期性(二).mp4         SSEFilePC.zip
 7.27上午分段函数、绝对值函数、函数有界性(一).mp4   宋浩高等数学直播课回放.enc
 7.30上午基本初等函数之三角函数(三).mp4            '美好的每一天 ~不连续的存在~'
 7.30上午基本初等函数之常数函数和幂函数(一).mp4     高等数学同济版第218讲.7z
 7.30上午基本初等函数之指数函数和对数函数(二).mp4
wsl@office ~/a/SBHB> cd 美好的每一天\ ~不连续的存在~/
wsl@office ~/a/S/美好的每一天 ~不连续的存在~> ls
 BGI-CHS.exe                                     data01900.arc   data02997.arc   data04080.arc
 BGIError.txt                                    data01999.arc   data02999.arc   data04090.arc
 BGI.exe                                         data02100.arc   data03100.arc   data04095.arc
 BGI.gdb                                         data02101.arc   data03800.arc   data05000.arc
 BGI.hvl                                         data02910.arc   data03810.arc   data05010.arc
 BGI_patch.exe                                   data02920.arc   data03820.arc   fcxzzd.arc
'BGI_patch.exe 启动游戏 汉化移植v1.01版本.txt'   data02921.arc   data04010.arc   font.ttf
 BHVC.exe                                        data02930.arc   data04011.arc   README.txt
 data01000.arc                                   data02931.arc   data04012.arc   sysgrp.arc
 data01101.arc                                   data02932.arc   data04013.arc   sysprg.arc
 data01102.arc                                   data02933.arc   data04020.arc   system.arc
 data01201.arc                                   data02934.arc   data04030.arc   Uninstaller.exe
 data01301.arc                                   data02940.arc   data04035.arc   uninst.lst
 data01401.arc                                   data02980.arc   data04040.arc   UserData
 data01501.arc                                   data02989.arc   data04050.arc   关于步兵.txt
 data01601.arc                                   data02990.arc   data04060.arc   补丁&附件
 data01701.arc                                   data02995.arc   data04070.arc
 data01801.arc                                   data02996.arc   data04075.arc

好了到这一步也是把游戏本体搞出来了。

准备wine环境

  1. wine版本并无所谓,64位还是32位也无所谓,重点是让程序在中文的locale运行即可。安装wine在不同的发行版下都不一样,因此不贴安装指令了。
  2. 接下来需要初始化一个wine虚拟系统,指令如下:
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> export WINEPREFIX="$HOME/.local/share/wineprefixes/subahibi"
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> mkdir -p "$WINEPREFIX"
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineboot -u
     # ...省略输出
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineserver -w
    
    这一步会初始化winemono,需要的时间会比较多。
  3. 安装字体文件,不安装字体文件进游戏还是黑框:
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> cp ./font.ttf "$WINEPREFIX/drive_c/windows/Fonts/subahibi.ttf"
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wine reg add \
                                                         'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts' \
                                                         /v 'SimHei (TrueType)' \
                                                         /t REG_SZ \
                                                         /d 'subahibi.ttf' \
                                                         /f
     00b4:fixme:wineusb:query_id Unhandled ID query type 0x5.
     reg: The operation completed successfully
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineboot -u
     # ... 省略输出
     wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineserver -w
    

启动游戏

很简单,设置locale环境变量就好了。这样就可以正常看到汉化后的内容了。

wsl@office ~/a/S/美好的每一天 ~不连续的存在~> LC_ALL=zh_CN.UTF-8 LANG=zh_CN.UTF-8 wine BGI-CHS.exe
00b4:fixme:wineusb:query_id Unhandled ID query type 0x5.
0124:fixme:heap:RtlSetHeapInformation HEAP_INFORMATION_CLASS 1 not implemented!
0124:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0124:fixme:imm:ime_ui_window_proc hwnd 00030070, himc 00010058, msg WM_IME_CONTROL, wparam IMC_CLOSESTATUSWINDOW, lparam 0 stub!
0198:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core contexts.

nix化

  1. 接下来最好玩的,就是把这套配置nix化了,首先在home-manager中增加 wineWow64Packages.stableFull
  home.packages = with pkgs;[
    wineWow64Packages.stableFull
  ]
  1. 接下来增加subahibi.nix,并在home中引入:
{ pkgs, ... }:

let
  wine = pkgs.wineWow64Packages.stableFull;

  subahibi = pkgs.writeShellApplication {
    name = "subahibi";

    runtimeInputs = [
      wine
      pkgs.coreutils
      pkgs.gnugrep
    ];

    text = ''
      export WINEPREFIX="''${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/subahibi"

      GAME_DIR="$HOME/apps/美好的每一天 ~不连续的存在~"
      GAME_EXE="$GAME_DIR/BGI-CHS.exe"

      FONT_SRC="$GAME_DIR/font.ttf"
      FONT_DST="$WINEPREFIX/drive_c/windows/Fonts/subahibi.ttf"

      if [ ! -f "$GAME_EXE" ]; then
        echo "找不到游戏:$GAME_EXE"
        exit 1
      fi

      #
      # 创建 Wine prefix
      # 注意:这里不使用 zh_CN locale
      #
      if [ ! -f "$WINEPREFIX/system.reg" ]; then
        echo "首次运行:创建 Wine prefix..."

        mkdir -p "$WINEPREFIX"

        wineboot -u
        wineserver -w

        echo "Wine prefix 创建完成。"
      fi

      #
      # 检查字体
      #
      if [ ! -f "$FONT_SRC" ]; then
        echo "找不到字体:$FONT_SRC"
        exit 1
      fi

      NEED_FONT=0

      if [ ! -f "$FONT_DST" ]; then
        NEED_FONT=1
      elif ! cmp -s "$FONT_SRC" "$FONT_DST"; then
        NEED_FONT=1
      fi

      if ! wine reg query \
        'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts' \
        /v 'SimHei (TrueType)' 2>/dev/null |
        grep -qi 'subahibi.ttf'
      then
        NEED_FONT=1
      fi

      #
      # 安装字体
      #
      if [ "$NEED_FONT" -eq 1 ]; then
        echo "安装游戏字体..."

        mkdir -p "$WINEPREFIX/drive_c/windows/Fonts"

        cp -f "$FONT_SRC" "$FONT_DST"

        wine reg add \
          'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts' \
          /v 'SimHei (TrueType)' \
          /t REG_SZ \
          /d 'subahibi.ttf' \
          /f

        wineboot -u
        wineserver -w

        echo "字体安装完成。"
      fi

      #
      # 只有游戏使用中文 locale
      #
      cd "$GAME_DIR"

      exec env \
        LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive" \
        LANG="zh_CN.UTF-8" \
        LC_ALL="zh_CN.UTF-8" \
        wine BGI-CHS.exe
    '';
  };
in
{
  home.packages = [
    wine
    subahibi
  ];
}

引入就不写了,到此为止,就可以在shell中使用 subahibi 命令一键启动素晴日了。

参照与引用

本试验在AI Agent的指导下进行,因此无法总结参考文献。