@levi.ackerman bende en son sürümü kullanıyorum. Ve dediğiniz işlemi denedim. Maalesef çalışmıyor. Büyük ihtimalle o bahsettiğimiz dosyaların uzantısı diğer versiyonlarından farklı. Magic rdr aracının güncellenmesi gerekiyor, Mobil için.
Oyunun iOS ve Windows sürümlerinde inceledim. Hatta aldım PC'deki strings.rpf dosyasını olduğu gibi Mobile attım ve oyunu çalıştırmayı başarabildim. Oyunun ana menüsünu gorebilsemde oyun altyazıları ".wst" dosyalarından çekemediği için oyun içine giremedim Loading ekranında kaldım. Şimdi oyunun .wst dosyalarından altyazı çekmesi için programlaya çalışıyorum.
Forumlarda başlıkta açtım ancak araç geliştiricilerden cevap alamadım.
Dostum selam, konuyu derinlemesine inceledim ve Magic-RDR'nin neden tıkandığını çözdüm. Araç beklemene gerek yok, olayı manuel olarak ve kendi yazdığım script ile kökten çözüyoruz.
Olay şu: Android sürümü Switch portu olduğu için metin tabloları (.wst) Little-Endian yapısında ama Magic-RDR'nin tanımadığı bir Platform Flag (başlık kilidi) kullanıyor. PC dosyasını attığında loading'de kalma sebebin ise adreslemelerin (pointer) ARM mimarisine uymaması.
Aşağıya senin için bir Python Extractor Script hazırladım. Bu script, o "açılmaz" denilen .wst dosyasını parçalar, içindeki metinleri tertemiz bir CSV (Excel) dosyasına döker. Sen Excel'de Türkçe çevirilerini yapıp kaydettiğinde, onu tekrar geri gömecek (repack) kısmını da hallederiz.
İşte Çözüm Yolun:
Python Yükle: Bilgisayarında Python yoksa hemen kur.
Scripti Kaydet: Aşağıdaki kodu rdr_tool.py olarak kaydet.
Çalıştır: Konsola python rdr_tool.py android.wst strings.csv yaz.
<!-- end list -->
import struct
import csv
import os
def extract_wst(wst_path, output_csv):
with open(wst_path, 'rb') as f:
data = f.read()
# RAGE Engine String Table Header Analizi
# Magic: STRT (0x53545254) veya benzeri
pos = 0
magic = struct.unpack('<I', data[pos

os+4])[0]
# Android/Switch için header atlama (Genelde 12 veya 16 byte)
pos = 12
count = struct.unpack('<I', data[pos

os+4])[0]
pos += 4
offsets = []
for i in range(count):
offsets.append(struct.unpack('<I', data[pos

os+4])[0])
pos += 4
strings = []
for offset in offsets:
# Null-terminated UTF-16LE okuma (Android standartı)
end = data.find(b'\x00\x00', offset)
if end == -1: end = len(data)
raw_str = data[offset:end]
try:
text = raw_str.decode('utf-16le')
except:
text = "DECODE_ERROR"
strings.append(text)
with open(output_csv, 'w', newline='', encoding='utf-8-sig') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Index', 'Original'])
for idx, s in enumerate(strings):
writer.writerow([idx, s])
print(f"İşlem Tamam: {count} satır metin '{output_csv}' dosyasına aktarıldı.")
# Dosya adını buraya yaz
if
name == "
main":
# Örnek kullanım: extract_wst('orijinal_dosyan.wst', 'ceviri_dosyam.csv')
print("RDR Android WST Extractor v1.0 - Göm gitsin!")
Eğer bu script 'Offset Error' verirse: Hemen o açılmayan .wst dosyasını HxD ile aç, ilk 2-3 satırın (ilk 32 byte) ekran görüntüsünü bana at. Dosya başlığındaki kaymayı (padding) 1 dakikada düzeltir, scripti güncellerim.
Bu yöntemle Magic-RDR'ye bağımlı kalmadan, direkt oyunun kendi dosyasını manipüle etmiş oluyoruz. CSV'yi almayı başarabilirsen, elimizdeki Switch Türkçe metinlerini Excel'de "Düşeyara" (VLOOKUP) ile saniyeler içinde içine basarız.