- C++ 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github | ||
| include | ||
| tests | ||
| LICENSE | ||
| README.md | ||
PS5 System Language Research
Documentation and minimal C++ code for reading the language selected in PlayStation 5 system settings.
Quick start
Include include/ps5_system_language.hpp, link the PS5 Payload SDK's SceSystemService stub, and call:
const std::string_view locale = ps5::i18n::current_language_tag();
For a prospero.mk project, add the library to the existing link list:
LDADD += -lSceSystemService
The header calls:
sceSystemServiceParamGetInt(1, &language);
Parameter ID 1 requests the system language. The function returns 0 on success and writes the selected language ID to language. The helper returns en-US if the call fails or the firmware returns an unknown value.
Language IDs
| ID | System language | BCP 47 tag |
|---|---|---|
| 0 | Japanese | ja-JP |
| 1 | English (United States) | en-US |
| 2 | French (France) | fr-FR |
| 3 | Spanish (Spain) | es-ES |
| 4 | German | de-DE |
| 5 | Italian | it-IT |
| 6 | Dutch | nl-NL |
| 7 | Portuguese (Portugal) | pt-PT |
| 8 | Russian | ru-RU |
| 9 | Korean | ko-KR |
| 10 | Chinese (Traditional) | zh-Hant |
| 11 | Chinese (Simplified) | zh-Hans |
| 12 | Finnish | fi-FI |
| 13 | Swedish | sv-SE |
| 14 | Danish | da-DK |
| 15 | Norwegian | nb-NO |
| 16 | Polish | pl-PL |
| 17 | Portuguese (Brazil) | pt-BR |
| 18 | English (United Kingdom) | en-GB |
| 19 | Turkish | tr-TR |
| 20 | Spanish (Latin America) | es-419 |
| 21 | Arabic | ar |
| 22 | French (Canada) | fr-CA |
| 23 | Czech | cs-CZ |
| 24 | Hungarian | hu-HU |
| 25 | Greek | el-GR |
| 26 | Romanian | ro-RO |
| 27 | Thai | th-TH |
| 28 | Vietnamese | vi-VN |
| 29 | Indonesian | id-ID |
| 30 | Ukrainian | uk-UA |
Values 0 through 29 follow the established SystemService ABI. Value 30 is community-documented and should be verified on the target firmware. Applications must retain an unknown-value fallback because later firmware may add values.
Loading translations
Keep the platform lookup separate from the application's translation fallback rules:
const auto locale = ps5::i18n::current_language_tag();
if (!load_translations(locale))
load_translations("en-US");
Applications supporting fewer regions can deliberately collapse tags. For example, en-US and en-GB may both load an en resource, while zh-Hans and zh-Hant should normally remain distinct.
Evidence and scope
sceSystemServiceParamGetIntwith parameter ID1is used by a public PS5 project; that implementation also uses IDs10and11for Traditional and Simplified Chinese.- The
OrbisSystemParamLanguagedefinitions document the stable values0through29inherited by the interface. - The community
LibSceSystemServicelanguage table records Ukrainian as value30, but labels it unverified.
This repository documents a narrow compatibility technique. It does not claim that every listed language was tested on every PS5 firmware.
License and notices
Copyright © 2026 BlackBearReloaded. Licensed under GPL-3.0-or-later; see LICENSE.
This is a personal hobby project. It is not affiliated with, endorsed by or sponsored by Sony Interactive Entertainment or any other company named here. Product names are trademarks of their owners and are used only to describe compatibility.
Provided as is, without warranty. Nothing here is legal advice.