🧩 PyLocres
PyLocres is a Python library for reading, writing, and editing .locres and .locmeta files used in Unreal Engine's localization system.
Supports all known versions of Locres, including the latest.
📦 Installation
Install from PyPI:
pip install pylocres
Or install directly from the repository:
git clone https://github.com/stas96111/pylocres.git
cd pylocres
pip install -r requirements.txt
pip install .
🛠️ Command Line Tool
# Show info about a .locres file
pylocres info --path example.locres
# Convert .locres to .csv
pylocres to-csv --path example.locres --out output.csv
# Convert .csv to .locres
pylocres from-csv --path output.csv --out result.locres
# Convert .locres to .po
pylocres to-po --path example.locres --out output.po
# Convert .po to .locres
pylocres from-po --path output.po --out result.locres
📘 Usage: Locres
from pylocres import LocresFile, Namespace, Entry, LocresVersion, entry_hash
# Create Locres file instance
locres = LocresFile()
# Read a .locres file
locres.read("path/to/file.locres")
# Iterate over all namespaces
for namespace in locres:
print("Namespace:", namespace.name or "<default>")
# Iterate over all entries in the namespace
for entry in namespace:
print("Key:", entry.key) # cf433749-2e... (uuid4 or custom key)
print("Translation:", entry.translation) # Hello world!
print("Source Hash:", entry.hash) # 828975897
# Set a new translation
entry.translation = "Привіт світ!"
# Optionally, recalculate source hash
entry.hash = entry_hash("Hello world!")
# Create a new entry and add it to a namespace
new_entry = Entry("my_key", "My translation", entry_hash("My source"))
namespace.add(new_entry)
# Add a new namespace
new_namespace = Namespace("UI")
locres.add(new_namespace)
# Set file format version (default: CityHash)
locres.version = LocresVersion.CityHash
# Save the modified locres file
locres.write("path/to/output.locres")
# Done
Locmeta Usage
from pylocres import LocmetaFile, LocmetaVersion
# Create Locmeta file instance
locmeta = LocmetaFile()
# Read a .locmeta file
locmeta.read("path/to/file.locmeta")
# View metadata
print("Version:", locmeta.version)
print("Native culture:", locmeta.native_culture) # en
print("Native locres path:", locmeta.native_locres) # en/Game.locres
print("Compiled cultures:", locmeta.compiled_cultures) # ["en", "de", "fr", ...]
# Modify metadata
locmeta.native_culture = "uk"
# Save changes
locmeta.write("path/to/output.locmeta")
# Done
License
MIT License © 2025 stas96111
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pylocres-0.2.tar.gz
(14.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pylocres-0.2-py3-none-any.whl
(13.0 kB
view details)
File details
Details for the file pylocres-0.2.tar.gz.
File metadata
- Download URL: pylocres-0.2.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fc9872e95f8ec6e1ef4d362702ef0c1ccf6df23ea15da1d0287371c33b4afb3
|
|
| MD5 |
1721280954fe6fc9cdd82b5047cde121
|
|
| BLAKE2b-256 |
778d2c0ac0d660fcfb530d4f6da983d411850098cd896844855416eb34a2222d
|
File details
Details for the file pylocres-0.2-py3-none-any.whl.
File metadata
- Download URL: pylocres-0.2-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f217d317c162a0e4f13135f88682e61aaed0cfd26b7e6d02212aef7338f473bc
|
|
| MD5 |
ccb564ea20fef7a9e9ef2922acce27fa
|
|
| BLAKE2b-256 |
80a8eccbcf8a8741e5b36edd20795fdaf2879cfc90e8137f7eca4a178cb2798d
|