95 lines
3.4 KiB
Markdown
95 lines
3.4 KiB
Markdown
# stringslator
|
||
|
||
Simple system strings localization for the masses. NSLocalizedString()
|
||
|
||
|
||
|
||
## What is it?
|
||
|
||
This script was inspired by an App called [System Strings][1] by Oleg Andreev. The functionality is similar but doesn't rely on a dictionary that is distributed together with the application.
|
||
|
||
Instead this script will parse all translation files (`.strings`
|
||
files) that are already present in the operating system. Common translations like 'Abort' were already translated by Apple Inc. (and other software distributors).
|
||
|
||
|
||
|
||
## Usage
|
||
|
||
First we have to create an index on some files. Lets start with macOS' system applications.
|
||
|
||
```
|
||
stringslator.py add -r /System/
|
||
```
|
||
|
||
This takes roughly 1 minute. The SQLite database is now initialized (133mb with 1.7M strings) in the same directory as the python script. We can start searching for some translations:
|
||
|
||
```
|
||
stringslator.py search "Update s%"
|
||
```
|
||
```
|
||
141 | Update Security Code --- ('UPDATECODE')
|
||
320 | Update Services --- ('kPerformSDPQueryKey')
|
||
454 | Update suchen --- ('SOFTWARE_UPDATE_FINDING')
|
||
454 | Update suchen --- ('MIGRATION_UPDATE_FINDING')
|
||
1747 | Update Services --- ('kPerformSDPQueryKey')
|
||
|
||
5 results.
|
||
```
|
||
|
||
Notice here, we used `%` to match an arbitrary suffix. Use `_` for a single character wildcard. SQLite like matching rules apply. (see Notes below for language specific search).
|
||
|
||
After we found a translation we want, lets export the translations for all available languages. For that, we use the first column id and the title-key value inside `('...')`.
|
||
|
||
```
|
||
stringslator.py export 141 "UPDATECODE"
|
||
```
|
||
```
|
||
ar|تحديث رمز الأمن
|
||
ca|Actualitzar codi de seguretat
|
||
cs|Aktualizovat zabezpečovací kód
|
||
da|Opdater sikkerhedskode
|
||
de|Sicherheitscode aktualisieren
|
||
el|Ενημέρωση κωδικού ασφαλείας
|
||
en|Update Security Code
|
||
es|Actualizar código de seguridad
|
||
es_419|Actualizar código de seguridad
|
||
fi|Päivitä suojakoodi
|
||
fr|Mettre à jour le code de sécurité
|
||
he|עדכן/י קוד אבטחה
|
||
hi|सुरक्षा कोड अपडेट करें
|
||
hr|Ažuriraj sigurnosni kôd
|
||
hu|Biztonsági kód frissítése
|
||
id|Perbarui Kode Keamanan
|
||
it|Aggiorna codice di sicurezza
|
||
ja|セキュリティコードをアップデート
|
||
ko|보안 코드 업데이트
|
||
ms|Kemas Kini Kod Keselamatan
|
||
nl|Werk beveiligingscode bij
|
||
no|Oppdater sikkerhetskode
|
||
pl|Uaktualnij kod bezpieczeństwa
|
||
pt|Atualizar Código de Segurança
|
||
pt_PT|Atualizar código de segurança
|
||
ro|Actualizează codul de securitate
|
||
ru|Обновить код безопасности
|
||
sk|Aktualizovať bezpečnostný kód
|
||
sv|Uppdatera säkerhetskod
|
||
th|อัพเดทรหัสความปลอดภัย
|
||
tr|Güvenlik Kodunu Güncelle
|
||
uk|Оновити захисний код
|
||
vi|Cập nhật Mã Bảo mật
|
||
zh_CN|更新安全码
|
||
zh_TW|更新安全碼
|
||
```
|
||
|
||
For a quick translation job this should be sufficient. If you need some advanced processing, you can also use the SQLite db directly.
|
||
|
||
If you later decide to add or remove additional applications to the db, use the `add` and `delete` commands respectively. Apps can also be deleted by their file-id. All commands show a help `-h` window to describe available options.
|
||
|
||
|
||
|
||
## Notes
|
||
|
||
Search will always search case independent and by default English and German translations. If you want to change this behavior go to `cli_search` and modify `langs=["en%", "de%", "Ger%"]`.
|
||
|
||
|
||
[1]: https://itunes.apple.com/us/app/system-strings/id570467776?l=en |