84 lines
4.1 KiB
Python
84 lines
4.1 KiB
Python
import os
|
|
import re
|
|
import json
|
|
|
|
base_dir = r"c:\laragon\www\fiberid"
|
|
php_files = []
|
|
for root, dirs, files in os.walk(base_dir):
|
|
for f in files:
|
|
if f.endswith('.php'):
|
|
php_files.append(os.path.join(root, f))
|
|
|
|
# A script to extract potential UI strings
|
|
ui_strings = set()
|
|
|
|
# Regexes
|
|
inner_text_re = re.compile(r'>\s*([^<]+?)\s*<')
|
|
placeholder_re = re.compile(r'placeholder=[\"\'\']([^\"\'\']+)')
|
|
title_re = re.compile(r'title=[\"\'\']([^\"\'\']+)')
|
|
alert_re_1 = re.compile(r'showCustomAlert\(\s*[\"\']([^\"\']+)[\"\']\s*,\s*[\"\']([^\"\']+)[\"\']')
|
|
|
|
# Basic Indonesian words to help filter out programming artifacts and english defaults
|
|
indonesian_words = {
|
|
'ada', 'adalah', 'akan', 'akun', 'alami', 'ambil', 'anda', 'apa', 'apakah', 'atas', 'atau', 'bagaimana',
|
|
'batal', 'baru', 'bawah', 'beberapa', 'belakang', 'belum', 'berada', 'berhasil', 'berikut', 'berkas', 'berubah',
|
|
'besar', 'bisa', 'boleh', 'bukan', 'buat', 'buku', 'butuh', 'cahaya', 'cepat', 'coba', 'cocok', 'contoh', 'dalam',
|
|
'dan', 'dapat', 'dari', 'data', 'dengan', 'depan', 'di', 'dia', 'diperbarui', 'edit', 'email', 'foto', 'gagal',
|
|
'gambar', 'ganti', 'gelap', 'hapus', 'hari', 'harus', 'hasil', 'hati', 'hidup', 'hingga', 'hubungi', 'identitas',
|
|
'informasi', 'ini', 'isi', 'itu', 'jadwal', 'jam', 'jangan', 'jaringan', 'jika', 'juga', 'kalian', 'kami', 'kamera',
|
|
'kamu', 'kanan', 'karena', 'kata', 'ke', 'kecil', 'kembali', 'kemudian', 'kiri', 'koneksi', 'konfirmasi', 'kontak',
|
|
'kuat', 'kurang', 'lalu', 'lama', 'lanjutkan', 'lebar', 'lebih', 'lemah', 'lengkap', 'lihat', 'log', 'luar',
|
|
'masuk', 'masukkan', 'mata', 'melakukan', 'memilih', 'memiliki', 'mencari', 'mendeteksi', 'menggunakan', 'mengisi',
|
|
'mengubah', 'mengunggah', 'menunggu', 'merubah', 'mereka', 'minimal', 'mula', 'mulai', 'muncul', 'nama', 'ni',
|
|
'nomor', 'oleh', 'opsi', 'pada', 'paling', 'panjang', 'password', 'pastikan', 'pencahayaan', 'pendaftaran',
|
|
'pengaturan', 'pengelola', 'pengguna', 'penghuni', 'penting', 'percobaan', 'perbarui', 'peringatan', 'perlu',
|
|
'pilih', 'pin', 'posisi', 'posisikan', 'pribadi', 'profil', 'proses', 'riwayat', 'salah', 'sama', 'sambut', 'sampai',
|
|
'sana', 'sandi', 'sangat', 'saat', 'saya', 'sebagai', 'sebelum', 'sebelumnya', 'secara', 'sedang', 'segera', 'selamat',
|
|
'selanjutnya', 'selesai', 'seluruh', 'semua', 'seperti', 'sesuai', 'setelah', 'setuju', 'siap', 'silakan', 'silahkan',
|
|
'simpan', 'sini', 'sistem', 'status', 'sudah', 'tambah', 'tambahan', 'tanpa', 'tata', 'telah', 'tempat', 'tentang',
|
|
'terang', 'terbaru', 'terdaftar', 'terdeteksi', 'terhadap', 'terjadi', 'terlalu', 'tersebut', 'tersedia', 'tetapi',
|
|
'tidak', 'tinggal', 'tolak', 'tolong', 'tutup', 'ubah', 'ukuran', 'ulang', 'umum', 'unggah', 'untuk', 'utara',
|
|
'wajah', 'waktu', 'wajib', 'warna', 'ya', 'yang'
|
|
}
|
|
|
|
def is_likely_indonesian(text):
|
|
words = set(re.findall(r'[a-zA-Z]+', text.lower()))
|
|
return len(words.intersection(indonesian_words)) > 0
|
|
|
|
def clean_extracts(items):
|
|
valid = []
|
|
for item in items:
|
|
# Strip outer spaces
|
|
item = item.strip()
|
|
# Skip empty or very short
|
|
if len(item) < 3: continue
|
|
# Skip if it's purely php tags or html artifacts
|
|
if '<?' in item or '?>' in item or item.startswith('$') or item.startswith(';') or item.startswith('{'): continue
|
|
if is_likely_indonesian(item):
|
|
valid.append(item)
|
|
return valid
|
|
|
|
for file in php_files:
|
|
try:
|
|
with open(file, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
except:
|
|
pass
|
|
|
|
found = []
|
|
found.extend(inner_text_re.findall(content))
|
|
found.extend(placeholder_re.findall(content))
|
|
found.extend(title_re.findall(content))
|
|
|
|
for t1, t2 in alert_re_1.findall(content):
|
|
found.extend([t1, t2])
|
|
|
|
valid_strings = clean_extracts(found)
|
|
for s in valid_strings:
|
|
ui_strings.add(s)
|
|
|
|
with open(r'c:\laragon\www\fiberid\indonesian_strings.json', 'w', encoding='utf-8') as f:
|
|
json.dump(list(ui_strings), f, ensure_ascii=False, indent=2)
|
|
|
|
print(f"Extracted {len(ui_strings)} unique Indonesian strings")
|