HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
game src nin ana dizinine locale_string.txt yi atın aynı dizinde py yi çalıştırın. kendi kaynak kodlarımda düzgün çalışıt ben kullanıyorum suan ama yinede kontrol edin.
Python:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, re, shutil, sys
# ——— Ayarlar ———
START_ID = 1000
LOCALE_FILENAME = 'locale_string.txt'
# Betik ve locale dosyasının bulunduğu klasör
script_dir = os.path.dirname(os.path.abspath(__file__))
script_path = os.path.abspath(__file__)
locale_path = os.path.join(script_dir, LOCALE_FILENAME)
if not os.path.isfile(locale_path):
print(f"Hata: {LOCALE_FILENAME} bulunamadı.")
sys.exit(1)
def read_text(path):
"""UTF‑8, CP1254, Latin‑1 dene."""
for enc in ('utf-8', 'cp1254', 'latin-1'):
try:
with open(path, encoding=enc) as f:
return f.read(), enc
except UnicodeDecodeError:
continue
raise UnicodeDecodeError(f"Kodlama çözülemedi: {path}")
def write_text(path, text, encoding):
with open(path, 'w', encoding=encoding, newline='\n') as f:
f.write(text)
# Regex’ler
STRING_RE = re.compile(r'LC_TEXT\(\s*"((?:\\.|[^"\\])*)"\s*\)')
LOCALE_RE = re.compile(r'^"((?:\\.|[^"\\])*)";$')
SPEC_RE = re.compile(r'%(?:\d+\$)?[+-]?(?:\d+)?(?:\.\d+)?[hlL]?[diuoxXfFeEgGaAcspn]')
# 1) Tüm özgün LC_TEXT metinlerini topla ve ID/spec’li yeni anahtarı oluştur
mapping = {} # orig → ID string
newkey_map = {} # orig → yeni key string
next_id = START_ID
for root, _, files in os.walk(script_dir):
for fn in files:
full = os.path.join(root, fn)
if full in (script_path, locale_path):
continue
try:
data, enc = read_text(full)
except UnicodeDecodeError:
continue
for orig in STRING_RE.findall(data):
if orig not in mapping:
id_str = str(next_id)
mapping[orig] = id_str
specs = SPEC_RE.findall(orig)
if specs:
# ID + tüm specifier’lar + bir boşluk
newkey = id_str + ''.join(' ' + s for s in specs) + ' '
else:
newkey = id_str
newkey_map[orig] = newkey
next_id += 1
if not mapping:
print("Hiç LC_TEXT bulunamadı. Çıkılıyor.")
sys.exit(0)
# 2) locale_string.txt’i güncelle
locale_text, locale_enc = read_text(locale_path)
lines = locale_text.splitlines()
out = []
i = 0
while i < len(lines):
m = LOCALE_RE.match(lines[i])
if m and m.group(1) in newkey_map:
out.append(f"\"{newkey_map[m.group(1)]}\";")
if i+1 < len(lines):
out.append(lines[i+1])
i += 2
if i < len(lines) and lines[i].strip()=='':
out.append('')
i += 1
continue
out.append(lines[i])
i += 1
shutil.copy(locale_path, locale_path + '.bak')
write_text(locale_path, '\n'.join(out), locale_enc)
print(f"{LOCALE_FILENAME} güncellendi (yedek: {LOCALE_FILENAME}.bak)")
# 3) Kaynak dosyalarını güncelle
for root, _, files in os.walk(script_dir):
for fn in files:
full = os.path.join(root, fn)
if full in (script_path, locale_path):
continue
try:
text, enc = read_text(full)
except UnicodeDecodeError:
continue
new_text = STRING_RE.sub(
lambda m: f'LC_TEXT("{newkey_map.get(m.group(1), m.group(1))}")',
text
)
if new_text != text:
shutil.copy(full, full + '.bak')
write_text(full, new_text, enc)
print(f"{full} güncellendi (yedek: {fn}.bak)")
Yakın zamanda oturup yapacaktım global bir oyun hazırlığı içinde idim iyi geldi teşekkür ederim :=
senden önce başladimYakın zamanda oturup yapacaktım global bir oyun hazırlığı içinde idim iyi geldi teşekkür ederim :=

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 19
- Görüntüleme
- 2K
- Cevaplar
- 1
- Görüntüleme
- 343
- Cevaplar
- 8
- Görüntüleme
- 696
