Bu başvuru, masaüstü istemcinin dilini, renklerini, yazı tiplerini ve erişilebilirlik ayarlamalarını nasıl seçtiğini ve bu seçimleri nerede tuttuğunu açıklar. src/cluster_erp/desktop/ altındaki i18n/translator.py, i18n/en.json, i18n/tr.json, themes/theme_engine.py, themes/style.qss, core/accessibility_manager.py, core/settings_store.py, widgets/preferences_dialog.py ve widgets/accessibility_dialog.py dosyalarını kapsar. Web istemcisindeki karşılıkları uluslararasılaştırma ve diller ve temalar, belirteçler ve erişilebilirlik sayfalarındadır.
Kapsam ve kaynak¶
- Tanım yeri:
Translator(src/cluster_erp/desktop/i18n/translator.py:32),ThemeEngineveTHEMES(src/cluster_erp/desktop/themes/theme_engine.py:661-881),AccessibilityManager(src/cluster_erp/desktop/core/accessibility_manager.py:207),SettingsStore(src/cluster_erp/desktop/core/settings_store.py:8). - Sayılar: dil anahtarları her JSON dosyasının üst düzey anahtarları olarak; tema belirteçleri her
THEMESpaletinin anahtarları olarak; stil sayfası belirteçleristyle.qssiçindeki farklı@adyer tutucuları olarak, başlık yorumundaki sözcük dışarıda bırakılarak; simgeler_ICON_PATHSanahtarları olarak; ayar anahtarları ayar deposu veQSettingsüzerindekiget,setveremoveçağrıları aranarak sayıldı.
Dil dosyaları¶
| Dosya | Anahtar | _meta.name |
Kaynak |
|---|---|---|---|
en.json |
2.077 | English |
src/cluster_erp/desktop/i18n/en.json anahtarı _meta.name |
tr.json |
2.077 | Türkçe |
src/cluster_erp/desktop/i18n/tr.json anahtarı _meta.name |
İki dosya aynı anahtar kümesine sahiptir. Anahtarlar noktalı önekli düz metinlerdir. En büyük önekler procurement (269 anahtar), error (177), bom_explorer (174), chat (123), nesting_job (74), resource (58), product (56), purq (54), logs (54) ve common (48) önekleridir. Klasörde ayrıca boş bir en_keys.txt dosyası vardır.
Çevirmen¶
| Üye | Davranış | Kaynak |
|---|---|---|
| yapıcı | language ayarını okur, varsayılanı tr; en.json dosyasını yedek, seçilen dosyayı ana tablo olarak yükler |
src/cluster_erp/desktop/i18n/translator.py:35-55 |
t(key, fallback, **kwargs) |
Önce ana tabloya, sonra geçerli dilde ya da İngilizce metadata etiketlerine, sonra en.json dosyasına, sonra verilen yedeğe, en son anahtarın kendisine bakar; {ad} yer tutucularını doldurur |
src/cluster_erp/desktop/i18n/translator.py:57-67 |
register_meta(key, translations) |
t için bir metadata etiketi saklar |
src/cluster_erp/desktop/i18n/translator.py:69-70 |
set_language(locale) |
Ayarı kaydeder, tabloyu yeniden yükler ve language_changed yayar |
src/cluster_erp/desktop/i18n/translator.py:76-80 |
upper, title |
Dil tr olduğunda Türkçe noktalı ve noktasız i kurallarını kullanır |
src/cluster_erp/desktop/i18n/translator.py:12-29, src/cluster_erp/desktop/i18n/translator.py:82-90 |
available_languages() |
Klasördeki her *.json dosyası için kodu ve _meta.name değerini döndürür |
src/cluster_erp/desktop/i18n/translator.py:92-99 |
Yeni bir masaüstü dili, src/cluster_erp/desktop/i18n/ içinde yeni bir JSON dosyasıdır. Giriş iletişim kutusunun ve tercihler iletişim kutusunun dil seçicileri available_languages işlevinin bulduğu her dosyayı listeler (src/cluster_erp/desktop/widgets/login_dialog.py:214-226, src/cluster_erp/desktop/widgets/preferences_dialog.py:62-69). Masaüstü klasöründe languages.json yoktur. API istemcisi geçerli dili Accept-Language olarak gönderir ve her değişikliği izler (src/cluster_erp/desktop/main.py:169-172).
Çevrilmiş metin gösteren bileşenler Translator.language_changed sinyaline bağlanır ve metinlerini yeniden ayarlar. Örneğin MainWindow._retranslate_ui bölüm sekmelerini yeniden adlandırır (src/cluster_erp/desktop/widgets/main_window.py:64, src/cluster_erp/desktop/widgets/main_window.py:628-648).
Tema motoru¶
ThemeEngine, theme ayarını okur, varsayılanı dark, ve onu hemen uygular (src/cluster_erp/desktop/themes/theme_engine.py:717-726). Bir temayı uygulamak dört şey yapar (src/cluster_erp/desktop/themes/theme_engine.py:798-848):
- Paleti erişilebilirlikten gelen geçerli geçersiz kılmalarla birleştirir.
- Birleşik değerlerden uygulama için bir
QPaletteayarlar. - Simge SVG dosyalarını simge renginde ve onay kutusu SVG dosyalarını, yalnızca renkleri değiştiyse, yazar.
style.qssokur, her@belirteçdeğerini en uzun belirteç adından başlayarak değiştirir, stil sayfasını ayarlar ve her bileşeni yeniden cilalar.
set_overrides uygulamadan önce 150 ms bekler; böylece art arda birkaç değişiklik tek bir yeniden çizime yol açar (src/cluster_erp/desktop/themes/theme_engine.py:777-790). toggle, light ile dark arasında geçiş yapar (src/cluster_erp/desktop/themes/theme_engine.py:880-881). current_colors, kendi kendini çizen bileşenler için birleşik paleti döndürür (src/cluster_erp/desktop/themes/theme_engine.py:875-878).
Tema belirteçleri¶
Her paletin 24 anahtarı vardır (src/cluster_erp/desktop/themes/theme_engine.py:661-714). style.qss bunların 20'sini ve üretilen onay kutusu görsellerinin klasörü olan cb-dir belirtecini kullanır (src/cluster_erp/desktop/themes/theme_engine.py:844).
| Belirteç | Koyu | Açık | style.qss içinde |
|---|---|---|---|
window |
#111113 |
#FBFBFC |
evet |
base |
#19191C |
#FFFFFF |
evet |
alternate-base |
#232327 |
#EDEDF0 |
evet |
text |
#ECECEF |
#1C1C1E |
evet |
dimmed |
#87878F |
#87878F |
evet |
muted |
#55555C |
#B0B0B8 |
evet |
accent |
#4C8EF7 |
#3E7BFA |
evet |
accent-hover |
#6BA1F8 |
#2E6AE6 |
evet |
highlight |
#2B4A7C |
#D5E4FD |
evet |
border |
#2A2A2E |
#E6E6E9 |
evet |
input |
#19191C |
#FFFFFF |
evet |
sidebar |
#111113 |
#F0F0F2 |
hayır |
sidebar-hover |
#1E1E21 |
#E6E6E9 |
hayır |
sidebar-active |
#252528 |
#DDDDE0 |
hayır |
danger |
#E5484D |
#E5484D |
evet |
warning |
#F5A623 |
#F5A623 |
evet |
success |
#30A46C |
#30A46C |
hayır |
button-gradient |
#2C2C31 |
#F4F4F7 |
evet |
button-shadow |
#18181B |
#C8C8CC |
evet |
primary-shadow |
#1E3560 |
#B0C4E0 |
evet |
font-family |
"Segoe UI" |
"Segoe UI" |
evet |
font-size |
9pt |
9pt |
evet |
font-size-small |
8pt |
8pt |
evet |
font-size-large |
13pt |
13pt |
evet |
Hayır olarak işaretli dört anahtarı bileşenler current_colors üzerinden okur; örneğin kenar çubuğu (src/cluster_erp/desktop/widgets/sidebar.py:321-334) ve durum çubuğu (src/cluster_erp/desktop/widgets/status_bar.py:76-88).
Simgeler¶
_ICON_PATHS, SVG yol parçaları olarak 123 simge glifi tutar (src/cluster_erp/desktop/themes/theme_engine.py:23-649). Motor bunları dimmed renginde geçici bir klasöre dosya olarak yazar ve icon(name) bir dosyayı yükler, bilinmeyen bir ad için boş bir simge döndürür (src/cluster_erp/desktop/themes/theme_engine.py:14, src/cluster_erp/desktop/themes/theme_engine.py:652-654, src/cluster_erp/desktop/themes/theme_engine.py:728-734). Metadata bölümleri ve aksiyonları simgeleri bu anahtarlarla adlandırır (src/cluster_erp/desktop/widgets/sidebar.py:202-205).
Erişilebilirlik ayarları¶
AccessibilityManager, ayarlarını accessibility/ öneki altında okur, tema geçersiz kılmalarını hesaplar ve her değişiklikten sonra settings_changed yayar (src/cluster_erp/desktop/core/accessibility_manager.py:195, src/cluster_erp/desktop/core/accessibility_manager.py:207-237). main() bunları giriş iletişim kutusundan önce uygular (src/cluster_erp/desktop/main.py:164-165).
| Ayar | Değerler | Etki | Kaynak |
|---|---|---|---|
font_scale |
small, default, large, xlarge |
9 pt temel yazı tipini 0,87, 1,0, 1,13 veya 1,27 ile çarpar ve üç yazı boyutu belirtecini ölçekler | src/cluster_erp/desktop/core/accessibility_manager.py:12-17, src/cluster_erp/desktop/core/accessibility_manager.py:390-397 |
high_contrast |
off, light |
Paleti yüksek karşıtlıklı açık bir paletle değiştirir | src/cluster_erp/desktop/core/accessibility_manager.py:19-39, src/cluster_erp/desktop/core/accessibility_manager.py:406-407 |
color_blind_mode |
off, protanopia, deuteranopia, tritanopia |
Vurgu, işaretleme, tehlike, uyarı ve başarı renklerini değiştirir | src/cluster_erp/desktop/core/accessibility_manager.py:41-66, src/cluster_erp/desktop/core/accessibility_manager.py:409-410 |
reading_bg |
off, peach, orange, yellow |
Arka plan renklerini, her biri açık ve koyu çeşitle, renklendirir | src/cluster_erp/desktop/core/accessibility_manager.py:68-158, src/cluster_erp/desktop/core/accessibility_manager.py:412-415 |
brightness |
50 ile 150 arası, varsayılan 100 | Dokuz arka plan anahtarını açar veya koyulaştırır | src/cluster_erp/desktop/core/accessibility_manager.py:161-189, src/cluster_erp/desktop/core/accessibility_manager.py:323-328, src/cluster_erp/desktop/core/accessibility_manager.py:417-423 |
dyslexia_font |
doğru veya yanlış | Bir listedeki kurulu ilk yazı tipine, daha geniş harf ve sözcük aralığıyla geçer | src/cluster_erp/desktop/core/accessibility_manager.py:192, src/cluster_erp/desktop/core/accessibility_manager.py:360-388 |
reduced_motion |
doğru veya yanlış | Saklanır ve iletişim kutusunda gösterilir | src/cluster_erp/desktop/core/accessibility_manager.py:295-298 |
welcomed |
bir kez ayarlanır | İlk ziyaretten sonra erişilebilirlik iletişim kutusunun karşılama şeridini gizler | src/cluster_erp/desktop/core/accessibility_manager.py:269-274, src/cluster_erp/desktop/widgets/accessibility_dialog.py:233-234 |
Saklanmış dark yüksek karşıtlık değeri light değerine taşınır; bilinmeyen diğer her değer off olur (src/cluster_erp/desktop/core/accessibility_manager.py:221-229). reset_all ayarlanabilir yedi ayarı siler ve varsayılanları uygular (src/cluster_erp/desktop/core/accessibility_manager.py:330-352). Tema değiştiğinde, herhangi bir ayarlama etkinse geçersiz kılmalar yeniden hesaplanır (src/cluster_erp/desktop/core/accessibility_manager.py:431-446).
Erişilebilirlik iletişim kutusu (anahtar accessibility.title); yazı boyutu, yüksek karşıtlık, renk körlüğü kipi ve okuma arka planı için bölümlü denetimler, 50 ile 150 arasında bir parlaklık kaydırıcısı, azaltılmış hareket ve disleksi yazı tipi için onay kutuları ve onaylı Tüm Ayarları Sıfırla (anahtar accessibility.reset_all) sunar (src/cluster_erp/desktop/widgets/accessibility_dialog.py:216-400, src/cluster_erp/desktop/widgets/accessibility_dialog.py:477-489). Kenar çubuğundan, giriş iletişim kutusundan ve MainWindow._show_accessibility üzerinden açılır (src/cluster_erp/desktop/widgets/sidebar.py:129, src/cluster_erp/desktop/widgets/login_dialog.py:230-240, src/cluster_erp/desktop/widgets/main_window.py:614-624).
Tercihler iletişim kutusu¶
Tercihler iletişim kutusu (anahtar settings.title) her değişikliği hemen uygular ve kaydeder (src/cluster_erp/desktop/widgets/preferences_dialog.py:37-133):
| Denetim | Ayar | Kaynak |
|---|---|---|
Tema (anahtar settings.theme) |
ThemeEngine.apply üzerinden theme |
src/cluster_erp/desktop/widgets/preferences_dialog.py:53-60, src/cluster_erp/desktop/widgets/preferences_dialog.py:102-105 |
Dil (anahtar settings.language) |
Translator.set_language üzerinden language |
src/cluster_erp/desktop/widgets/preferences_dialog.py:62-69, src/cluster_erp/desktop/widgets/preferences_dialog.py:107-110 |
Saat Dilimi (anahtar settings.timezone) |
timezone; sistemde bulunan 16 yaygın bölgenin düzenlenebilir listesi |
src/cluster_erp/desktop/widgets/preferences_dialog.py:71-82, src/cluster_erp/desktop/core/timezone_utils.py:8-30 |
Sunucu Adresi (anahtar settings.api_url) |
api_url; değişiklik yeniden başlatma ister |
src/cluster_erp/desktop/widgets/preferences_dialog.py:84-89, src/cluster_erp/desktop/widgets/preferences_dialog.py:117-133 |
Yerel ayarlar¶
SettingsStore, QSettings nesnesini ClusterERP kuruluşu ve DesktopClient uygulamasıyla sarar ve her yazımı hemen diske işler (src/cluster_erp/desktop/core/settings_store.py:8-21). İstemci 16 anahtar kullanır:
| Anahtar | Yazan | Kaynak |
|---|---|---|
api_url |
giriş iletişim kutusu, tercihler iletişim kutusu | src/cluster_erp/desktop/widgets/login_dialog.py:283, src/cluster_erp/desktop/widgets/preferences_dialog.py:123 |
server_urls |
giriş iletişim kutusu | src/cluster_erp/desktop/widgets/login_dialog.py:282 |
language |
Translator.set_language |
src/cluster_erp/desktop/i18n/translator.py:78 |
theme |
ThemeEngine.apply |
src/cluster_erp/desktop/themes/theme_engine.py:794 |
timezone |
tercihler iletişim kutusu | src/cluster_erp/desktop/widgets/preferences_dialog.py:112-126 |
window/geometry, window/state |
MainWindow.closeEvent |
src/cluster_erp/desktop/widgets/main_window.py:698-699 |
panes/layout |
PaneContainer.save_state |
src/cluster_erp/desktop/widgets/pane_container.py:28, src/cluster_erp/desktop/widgets/pane_container.py:270 |
accessibility/font_scale, high_contrast, reduced_motion, dyslexia_font, color_blind_mode, reading_bg, brightness, welcomed |
AccessibilityManager |
src/cluster_erp/desktop/core/accessibility_manager.py:207-352 |
get_user_timezone ve BomExplorer aynı depoyu kendi QSettings nesneleriyle okur (src/cluster_erp/desktop/core/timezone_utils.py:37-43, src/cluster_erp/desktop/modules/bom/bom_explorer.py:1412-1419).
Kısıtlar ve doğrulama¶
- Ayarlayıcılar listelerinin dışındaki değerleri yok sayar ve parlaklık 50 ile 150 arasına sıkıştırılır (
src/cluster_erp/desktop/core/accessibility_manager.py:278-328). - Bilinmeyen bir saat dilimi adı
UTCdeğerine düşer (src/cluster_erp/desktop/core/timezone_utils.py:37-43). AccessibilityManagerve erişilebilirlik iletişim kutusu dışında hiçbir kodreduced_motionokumaz; bu,src/cluster_erp/desktop/içinde ad aranarak bulundu.- Masaüstü dil dosyaları masaüstü klasörü dışındaki testlerce de denetlenir, örneğin hata anahtarlarının varlığı için (
tests/test_bom_bugfix_batch_2026_10_08.py:123-130).
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| translator | Translator |
Bir dil dosyasını yükleyen ve anahtarları ve metadata etiketlerini çözen masaüstü nesnesi. | çevirmen | src/cluster_erp/desktop/i18n/translator.py:32 |
| theme engine | ThemeEngine |
Bir paleti, belirteçli stil sayfasını ve üretilen simgeleri uygulayan masaüstü nesnesi. | tema motoru | src/cluster_erp/desktop/themes/theme_engine.py:717 |
| theme token | @token |
style.qss içinde tema motorunun bir palet değeriyle değiştirdiği yer tutucu. |
tema belirteci | src/cluster_erp/desktop/themes/theme_engine.py:844-846 |
| accessibility manager | AccessibilityManager |
Erişilebilirlik seçimlerini saklayan ve onları yazı tipi değişikliklerine ve tema geçersiz kılmalarına dönüştüren masaüstü nesnesi. | erişilebilirlik yöneticisi | src/cluster_erp/desktop/core/accessibility_manager.py:207 |
| settings store | SettingsStore |
Masaüstü istemcinin yerel QSettings deposunu saran nesne. |
ayar deposu | src/cluster_erp/desktop/core/settings_store.py:8 |
İlgili sayfalar¶
- Masaüstü istemci
- Masaüstü istemciyi çalıştırın
- Uluslararasılaştırma ve diller
- Temalar, belirteçler ve erişilebilirlik
- Veri güdümlü diller
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.