Skip to content

Languages

NathanNeurotic (Ripto) edited this page Oct 22, 2026 · 18 revisions

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

New discovery order starts with PR #1017

Directly beside the ELF (CWD) and CWD/LNG lookup are introduced by PR #1017. They work only in builds containing that change. On older releases, use 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.

Once PR #1017 is included in the build, 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 in PR #1017 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 → Interface → Language (also accessible from General & System in supported layouts). The list contains English and the discovered lang_*.lng files. Confirm the choice, then save settings.

Discovery happens as devices become available

If a device was not mounted at startup, wait for its source to initialize and reopen Settings. In PR #1017, 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:

Setting What it changes
Language (Settings → Interface) The language of RiptOPL's own menus. This page.
OSD Settings (Triangle on a game, or Game Launching → OSD Defaults) The language, TV aspect and video mode written into EEPROM as a game boots — it changes what the game sees, not what RiptOPL shows. OPL core only; not available under Neutrino. See Per-game Settings.

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.

Detailed reference: Language maintenance.


Source: languages.html @ 32cd00fba166. Read on the documentation website.

Clone this wiki locally