△◯✕□ RiptOPL DOCS
Downloads GitHub
This is the legacy version of RiptOPL. We have moved over to ps2build's C++ Edition at NathanNeurotic/RiptOPL, where new development now happens.

Languages

RiptOPL ships with English built in and can load additional interface languages from your storage device. This page is about installing and choosing one. If you want to translate RiptOPL, see the maintainer documentation in the repository instead.

What is already there

English is compiled into the ELF and needs no files. It is also the fallback: if a language file is missing a particular string, that string appears in English rather than blank. You will never lose text by switching language.

Installing extra languages

Discovery order in current builds

Lookup directly beside the ELF (CWD) and in CWD/LNG is in current releases (added by PR #1017). Builds from before that change read only the traditional enabled-device LNG/ folder or memory-card OPL directory.

The language files are published as a separate release asset, not inside the main package:

RIPTOPL-LANGS-*.zip

It contains the .lng language files and the non-Latin fonts some of them need. To install:

  1. Download RIPTOPL-LANGS-*.zip from the release.
  2. Extract it.
  3. For a build with CWD language support, put the selected lang_<Name>.lng directly beside the launched RiptOPL ELF, or inside an LNG/ directory beside it. The legacy device LNG/ folder is also supported.
  4. If the pack contains a matching font_<Name>.ttf or .otf, copy that file into the same directory as the .lng.

Language lookup has a defined priority order: launched ELF directory (CWD) → CWD/LNG/ → legacy memory-card OPL and enabled-device LNG/ folders. If the same language is installed in multiple places, only one entry is shown, and the highest-priority readable copy is selected. Available devices can still contribute languages during discovery; the CWD path is retried after boot-path resolution when the device was not initially readable.

These are alternatives, not folders to install three copies into:

mass0:/APPS/APP_RIPTOPL/
  RIPTOPL.ELF
  lang_French.lng
  lang_Japanese.lng
  font_Japanese.ttf

# OR:
mass0:/APPS/APP_RIPTOPL/LNG/
  lang_French.lng
  lang_Japanese.lng
  font_Japanese.ttf

# OR, legacy device layout:
mass0:/LNG/
  lang_French.lng
  lang_Japanese.lng
  font_Japanese.ttf

The language registry is dynamically sized rather than capped at 15 external languages, so multiple installed packs no longer compete for a fixed fifteen-entry table.

The RIPTOPL-LANGS archive includes separate versioned language subfolders. Copy the files inside the selected language subfolder; do not nest the versioned directory itself under the destination.

File naming

The filename is the language name
A language file must be named lang_<Name>.lng. RiptOPL takes the text between lang_ and .lng and shows exactly that in the language picker — so lang_French.lng appears as French. Renaming the file renames the entry.

A language that needs characters the default font does not carry — Japanese, Chinese, Korean, Russian, Greek or Arabic — can ship its own font beside it, named to match: font_<Name>.ttf or font_<Name>.otf. RiptOPL loads it automatically when that language is selected, and returns to the built-in font when you switch back to English. The RIPTOPL-LANGS pack already includes these fonts. Serbian's is the Croatian font, because the built-in font has no č, ć or đ and Serbian Latin uses the same letters as Croatian.

Japanese game titles with English menus

RiptOPL supports Unicode/CJK glyph fallback while leaving the interface language in English. Put font_CJK.ttf next to the active settings_riptopl.cfg and restart — not merely in LNG/. No toggle is needed. See the activation guide.

Choosing a language

Settings → Language contains the single menu-language picker and the OSD Defaults action. Select a language, then choose Save Changes on the Settings index. Earlier builds exposed the same menu-language picker under Interface and General & System.

Discovery happens as devices become available
If a device was not mounted at startup, wait for its source to initialize and reopen Settings. CWD is retried after boot-directory resolution. Copying new files into a folder already scanned in this session generally requires restarting RiptOPL.

This is not the OSD language setting

Two different things are called "language" in RiptOPL:

SettingWhat it changes
Language (Settings → Language)The language of RiptOPL's own menus. This page.
OSD Settings (Triangle on a game, or Settings → Language → OSD Defaults)The language, TV aspect and video mode handed to the game at launch — it changes what the game sees, not what RiptOPL shows. It does not change the menu language or the console's saved OSDSYS settings. OPL core only; not available under Neutrino. See Per-game Settings.

Arabic, Persian, CJK, Thai and Lao text

Ported from RIPPS2 build 104 by akilluminati47. NOT TESTED on hardware.

Translators write the text in logical order, as typed; no markup is needed. The language still needs a font that has the glyphs.

Troubleshooting

The language is not in the list. Confirm your build includes the new CWD discovery feature if using files beside the ELF. Otherwise move the language into a legacy LNG/ directory. Check the spelling lang_<Name>.lng, the enabled device/source, and whether the source has finished initializing. Restart if files were copied while RiptOPL was already running.

The language appears but the text is boxes or blanks. The font is missing. Copy the matching font_<Name>.ttf / .otf beside the matching language file — the language pack zip contains the fonts alongside the language files.

Some strings are still English. That is an untranslated-entry fallback, not proof that your installation is broken. The current build includes 33 external language names, but only 33 fork translation overlays are present, including newly added Galician and Serbian support. Several recently added PS1, RetroAchievements, VMC, parental-lock and DVR messages remain English in many language packs. The number of selectable languages does not mean all menu strings have been translated. Recent translations were backfilled from RIPPS2 by Akilluminati47; community corrections and on-console language checks are still welcome. For contributors, see language maintenance and the coverage audit. A language pack from an older build can also lack the newest entries.

Match the language pack to the build
.lng files are read by line position, so a pack from a different build can show the wrong text rather than falling back to English. If translated strings look mismatched or nonsensical, download the language pack that goes with your build.