diff --git a/Tools/langtool/src/main.rs b/Tools/langtool/src/main.rs index a72cc5c0ed..971e1666b3 100644 --- a/Tools/langtool/src/main.rs +++ b/Tools/langtool/src/main.rs @@ -302,7 +302,7 @@ fn check_keys(target_ini: &IniFile) -> io::Result<()> { Ok(()) } -fn fixup_keys(target_ini: IniFile, dry_run: bool) -> io::Result<()> { +fn fixup_keys(target_ini: &IniFile, dry_run: bool) -> io::Result<()> { for section in &target_ini.sections { let mut mismatches = Vec::new(); @@ -611,7 +611,7 @@ fn generate_prompt(filenames: &[String], section: &str, value: &str, extra: &str let base_str = format!("Please translate '{value}' from US English to all of these languages: {languages}. Output in json format, a single dictionary, key=value. Include en_US first (the original string). For context, the string will be in the translation section '{section}', and these strings are UI strings for my PSP emulator application. - Keep the strings relatively short, don't let them become more than 40% longer than the original string. + Keep the strings relatively short, try not to let them become more than 60% longer than the original string. Do not output any text before or after the list of translated strings, do not ask followups. {extra}"); @@ -664,7 +664,7 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b let root = "../../assets/lang"; let reference_ini_filename = "en_US.ini"; - let mut reference_ini = + let reference_ini = IniFile::parse_file(&format!("{root}/{reference_ini_filename}")).unwrap(); let mut filenames = Vec::new(); @@ -672,9 +672,6 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b // Grab them all. for path in std::fs::read_dir(root).unwrap() { let path = path.unwrap(); - if path.file_name() == reference_ini_filename { - continue; - } let filename = path.file_name(); let filename = filename.to_string_lossy(); if !filename.ends_with(".ini") { @@ -767,6 +764,8 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b let mut target_ini = IniFile::parse_file(&target_ini_filename).unwrap(); + let is_reference = filename == reference_ini_filename; + match cmd { Command::ApplyRegex { ref section, @@ -793,27 +792,48 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b language: _, section: _, } => {} - Command::FixupRefKeys => {} - Command::CheckRefKeys => {} + Command::FixupRefKeys => if is_reference { + fixup_keys(&target_ini, dry_run).unwrap(); + } + Command::CheckRefKeys => if is_reference { + check_keys(&target_ini).unwrap(); + } Command::CopyMissingLines { dont_comment_missing, } => { copy_missing_lines(reference_ini, &mut target_ini, !dont_comment_missing).unwrap(); } Command::CommentUnknownLines {} => { - deal_with_unknown_lines(reference_ini, &mut target_ini, UnknownLineAction::Comment) + if !is_reference { + deal_with_unknown_lines( + reference_ini, + &mut target_ini, + UnknownLineAction::Comment, + ) .unwrap(); + } } Command::RemoveUnknownLines {} => { - deal_with_unknown_lines(reference_ini, &mut target_ini, UnknownLineAction::Remove) + if !is_reference { + deal_with_unknown_lines( + reference_ini, + &mut target_ini, + UnknownLineAction::Remove, + ) .unwrap(); + } } Command::ListUnknownLines {} => { - deal_with_unknown_lines(reference_ini, &mut target_ini, UnknownLineAction::Log) - .unwrap(); + if !is_reference { + deal_with_unknown_lines(reference_ini, &mut target_ini, UnknownLineAction::Log) + .unwrap(); + } } Command::GetNewKeys => { - print_keys_if_not_in(reference_ini, &mut target_ini, &target_ini_filename).unwrap(); + if !is_reference { + print_keys_if_not_in(reference_ini, &mut target_ini, &target_ini_filename) + .unwrap(); + } } Command::SortSection { ref section } => sort_section(&mut target_ini, section).unwrap(), Command::RenameKey { @@ -828,51 +848,73 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b Command::AddNewKeyAI { ref section, ref key, - extra: _, + ref extra, overwrite_translated, } => { - let lang = filename.split_once('.').unwrap().0; - if let Some(ai_response) = &ai_response { - // Process it. - if let Some(translated_string) = ai_response.get(lang) { - println!("{lang}:"); - add_new_key( - &mut target_ini, - section, - key, - &format!("{translated_string} # AI translated"), - overwrite_translated, - ) - .unwrap(); - } else { - println!("Language {lang} not found in response. Bailing."); - return; + if !is_reference { + let lang = filename.split_once('.').unwrap().0; + if let Some(ai_response) = &ai_response { + // Process it. + if let Some(translated_string) = ai_response.get(lang) { + println!("{lang}:"); + add_new_key( + &mut target_ini, + section, + key, + &format!("{translated_string} # AI translated"), + overwrite_translated, + ) + .unwrap(); + } else { + println!("Language {lang} not found in response. Bailing."); + return; + } + } + } else { + if ai_response.is_some() { + let _ = extra; + add_new_key(&mut target_ini, section, key, key, overwrite_translated) + .unwrap(); } } } Command::AddNewKeyValueAI { ref section, ref key, - value: _, // was translated above - extra: _, + ref value, // was translated above + ref extra, overwrite_translated, } => { - let lang = filename.split_once('.').unwrap().0; - if let Some(ai_response) = &ai_response { - // Process it. - if let Some(translated_string) = ai_response.get(lang) { - println!("{lang}:"); + if !is_reference { + let lang = filename.split_once('.').unwrap().0; + if let Some(ai_response) = &ai_response { + // Process it. + if let Some(translated_string) = ai_response.get(lang) { + println!("{lang}:"); + add_new_key( + &mut target_ini, + section, + key, + &format!("{translated_string} # AI translated"), + overwrite_translated, + ) + .unwrap(); + } else { + println!("Language {lang} not found in response. Bailing."); + return; + } + } + } else { + if ai_response.is_some() { + let _ = extra; add_new_key( &mut target_ini, section, key, - &format!("{translated_string} # AI translated"), + value, overwrite_translated, ) .unwrap(); - } else { - println!("Language {lang} not found in response. Bailing."); - return; } } } @@ -920,29 +962,31 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b ref section, ref key, } => { - let lang_id = filename.strip_suffix(".ini").unwrap(); - if let Some(single_section) = &single_ini_section { - if let Some(target_section) = target_ini.get_section_mut(section) { - if let Some(single_line) = single_section.get_line(lang_id) { - if let Some(value) = line_value(&single_line) { - println!( - "Inserting value {value} for key {key} in section {section} in {target_ini_filename}" - ); - if !target_section.insert_line_if_missing(&format!( - "{key} = {value} # AI translated" - )) { - // Didn't insert it, so it exists. We need to replace it. - target_section.set_value(key, value, Some("AI translated")); + if !is_reference { + let lang_id = filename.strip_suffix(".ini").unwrap(); + if let Some(single_section) = &single_ini_section { + if let Some(target_section) = target_ini.get_section_mut(section) { + if let Some(single_line) = single_section.get_line(lang_id) { + if let Some(value) = line_value(&single_line) { + println!( + "Inserting value {value} for key {key} in section {section} in {target_ini_filename}" + ); + if !target_section.insert_line_if_missing(&format!( + "{key} = {value} # AI translated" + )) { + // Didn't insert it, so it exists. We need to replace it. + target_section.set_value(key, value, Some("AI translated")); + } } + } else { + println!("No lang_id {lang_id} in single section"); } } else { - println!("No lang_id {lang_id} in single section"); + println!("No section {section} in {target_ini_filename}"); } } else { - println!("No section {section} in {target_ini_filename}"); + println!("No section {section} in {filename}"); } - } else { - println!("No section {section} in {filename}"); } } } @@ -954,138 +998,6 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b println!("Langtool processing reference {reference_ini_filename}"); - // Some commands also apply to the reference ini. - match cmd { - Command::ApplyRegex { - ref section, - ref key, - ref pattern, - ref replacement, - } => { - apply_regex( - &mut reference_ini, - section, - key, - pattern, - replacement.as_ref().unwrap_or(&"".to_string()), - ) - .unwrap(); - } - Command::FinishLanguageWithAI { - language: _, - section: _, - } => {} - Command::CheckRefKeys => check_keys(&reference_ini).unwrap(), - Command::FixupRefKeys => fixup_keys(reference_ini.clone(), dry_run).unwrap(), - Command::AddNewKey { - ref section, - ref key, - } => { - add_new_key(&mut reference_ini, section, key, key, false).unwrap(); - } - Command::AddNewKeyAI { - ref section, - ref key, - ref extra, - overwrite_translated, - } => { - if ai_response.is_some() { - let _ = extra; - add_new_key(&mut reference_ini, section, key, key, overwrite_translated).unwrap(); - } - } - Command::AddNewKeyValueAI { - ref section, - ref key, - ref value, - extra, - overwrite_translated, - } => { - if ai_response.is_some() { - let _ = extra; - add_new_key( - &mut reference_ini, - section, - key, - value, - overwrite_translated, - ) - .unwrap(); - } - } - Command::AddNewKeyValue { - ref section, - ref key, - ref value, - } => { - add_new_key(&mut reference_ini, section, key, value, false).unwrap(); - } - Command::SortSection { ref section } => sort_section(&mut reference_ini, section).unwrap(), - Command::RenameKey { - ref section, - ref old, - ref new, - } => { - if old == new { - println!("WARNING: old == new"); - } - rename_key(&mut reference_ini, section, old, new).unwrap(); - } - Command::MoveKey { - ref old, - ref new, - ref key, - } => { - move_key(&mut reference_ini, old, new, key).unwrap(); - } - Command::CopyKey { - // between sections - ref old_section, - ref new_section, - ref key, - } => { - copy_key(&mut reference_ini, old_section, new_section, key).unwrap(); - } - Command::DupeKey { - // Inside a section, preserving a value - ref section, - ref old, - ref new, - } => { - dupe_key(&mut reference_ini, section, old, new).unwrap(); - } - Command::SplitKey { - ref section, - ref key, - } => { - split_key(&mut reference_ini, section, key).unwrap(); - } - Command::RemoveKey { - ref section, - ref key, - } => { - remove_key(&mut reference_ini, section, key).unwrap(); - } - Command::RemoveLinebreaks { - ref section, - ref key, - } => { - remove_linebreaks(&mut reference_ini, section, key).unwrap(); - } - Command::CopyMissingLines { - dont_comment_missing: _, - } => {} - Command::ListUnknownLines {} => {} - Command::CommentUnknownLines {} => {} - Command::RemoveUnknownLines {} => {} - Command::GetNewKeys => {} - Command::ImportSingle { - filename: _, - section: _, - key: _, - } => {} - } - if !dry_run { reference_ini.write().unwrap(); } diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 01aa5c100d..2dad8dae3e 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -1676,6 +1676,11 @@ void GameSettingsScreen::OnChangeBackground(UI::EventParams &e) { } void GameSettingsScreen::dialogFinished(const Screen *dialog, DialogResult result) { + if (equals(dialog->tag(), "NewLanguage") && result == DR_OK) { + screenManager()->RecreateAllViews(); + return; + } + bool recreate = false; if (result == DialogResult::DR_OK) { g_Config.iFpsLimit1 = iAlternateSpeedPercent1_ < 0 ? -1 : (iAlternateSpeedPercent1_ * 60) / 100; diff --git a/assets/lang/az_AZ.ini b/assets/lang/az_AZ.ini index 91627a0c4e..920821bc2c 100644 --- a/assets/lang/az_AZ.ini +++ b/assets/lang/az_AZ.ini @@ -108,7 +108,7 @@ Binds = Qoşulmalar Button Binding = Düymə Qoşulması Button Opacity = Düymə Şəffaflığı Button style = Düymə biçimi -Calibrate Analog Stick = Analoq Çubuğunu Kalibrə et +Calibrate analog stick = Analoq Çubuğunu Kalibrə et Calibrate = Kalibrə et Calibrated = Kalibirlənib Calibration = Kalibirləmə @@ -116,16 +116,16 @@ Circular deadzone = Dairəvi ölü bölgə Circular stick input = Dairəvi çubuq girişi Classic = Klassik Confine Mouse = Siçanı pəncərə/görüntü içində tut -Control Mapping = Yönəltmə xəritələnişi -Custom Key Setting = Özəl Düymə Quruluşu -Customize = Özəlləşdir -Customize Touch Controls = Toxunuşlu yönəltmə düzənini düzəlt... +Control mapping = Yönəltmə xəritələnişi +Custom touch button setup = Custom touch button setup +Customize = Özəlləşdir # Customize Touch Controls = Toxunuşlu yönəltmə düzənini düzəlt... D-PAD = D-Pad Deadzone radius = Ölü bölgə radiusu Disable D-Pad diagonals (4-way touch) = D-Pad diaqonallarını bağla (4-yönlü toxunma) Disable diagonal input = Diaqonal girişi bağla Double tap = İkili basma Easier sweeping movements = Asan sürükləmə hərəkətləri +Edit touch control layout = Edit touch control layout Enable analog stick gesture = Analoq çubuğunun hərəkətini aç Enable gesture control = Hərəkət yönəltməsini aç Enable standard shortcut keys = Standart qısayol düymələrini aç @@ -158,7 +158,7 @@ Mouse wheel button-release delay = Siçan təkər düyməsinin buraxılış geci MouseControl Tip = 'M' simgəsini basaraq, Siz artıq yönləndirmə xəritələnişi ekranında siçanı xəritələyə bilərsiniz. None (Disabled) = Heç nə (bağlıdır) Off = Sönülü -OnScreen = Ekran Üstü Yönləndirmə +On-screen touch controls = On-screen touch controls Portrait = Portret Portrait Reversed = Tərs Portret PSP Action Buttons = PSP eyləm düymələri @@ -225,7 +225,6 @@ Exit = &Çıx Extract File... = Faylları Ç&ıxart... File = &Fayl Frame Skipping = &Kadr buraxılışı -Frame Skipping Type = Kadr buraxılış biçimi Fullscreen = &Bütün Ekran Game Settings = &Oyun Quruluşları GE Debugger... = GE &Yolaqoyanı... @@ -282,8 +281,6 @@ Savestate Slot = Duru&m Qorunuşu Yuvası Screen Scaling Filter = &Ekran Ölçəklənişi Süzgəci Show Debug Statistics = Yolaqoyuş Durumlarını &Göstər Show FPS Counter = &FPS Sayğacını Göstər -Skip Number of Frames = Kadr buraxma sayı -Skip Percent of FPS = FPS Buraxma Yüzdəsi Smart 2D texture filtering = Ağıllı 2D toxuma süzgüsü Stop = &Dayan Switch UMD = UMD'ni Dəyiş @@ -327,7 +324,6 @@ Enable Logging = Çözüm gündəliklənişini aç Enable shader cache = Kölgələyici önyaddaşını aç Enter address = Adresi yaz Fast = Sürətli -Fast-forward mode = Sürətli irəli veriş modu FPU = FPU Fragment = Bölüntü Frame timing = Kadr Zamanlaması @@ -531,7 +527,7 @@ Failed to load executable: = işlənə bilənin yüklənişi uğursuz oldu: File corrupt = Fayl korlanıb File format not supported = Fayl formatı dəstəklənmir # AI translated File not found: %1 = Fayl tapılmayıb: %1 -Game disc read error - ISO korlanıb = Oyun diskində oxunuş yanlışı: ISO korlanıb. +Game disc read error - ISO corrupt = Oyun diskində oxunuş yanlışı: ISO korlanıb. GenericAllStartupError = PPSSPP istənilən arxa-uclu görüntü kartı ilə başlada bilmədi. Kartınızı və başqa sürücülərinizi yüksəltməyi sınayın. GenericBackendSwitchCrash = PPSSPP başlayarkən çökdü.\n\nÇox vaxt bu, görüntü sürücüsündəki sıxıntıdan qaynaqlanır. Görüntü sürücülərini yüksəltməyə çalışın.\n\nGörüntü arxa-ucu dəyişildi: GenericGraphicsError = Görüntü Yanlışı @@ -668,6 +664,7 @@ Device = Qurğu Direct3D 11 = Direct3D 11 Disable culling = Ayıqlamanı bağla Disabled = Bağlıdır +Display = Display Display layout & effects = Ekran qaplaması və effektlər Display Resolution (HW scaler) = Ekran çözünürlüyü (Qurğu ölçəkləyicisi) Display rotation = Görüntü dönüşü @@ -706,6 +703,7 @@ Lazy texture caching Tip = Sürətlidir, ancaq bir sıra oyunda yazı sıxıntı Lens flare occlusion = Linza parlaması tıxanıqlığı Linear = Düz xəttli Low = Aşağı +Low latency display = Low latency display LowCurves = Spline/Bezier əyrisi keyfiyyəti LowCurves Tip = Ancaq bir sıra oyunda işlənir. Əyrilərin axışqanlığını yönəldir Lower resolution for effects = Effektlər üçün aşağı çözünürlük @@ -1001,6 +999,7 @@ Error = Yanlış Failed to Bind Localhost IP = Localhost IP'ni birləşdirmə uğursuz oldu Failed to Bind Port = Portu birləşdirmə uğursuz oldu Failed to connect to Adhoc Server = Ad hoc qulluqçusuna qoşulma uğursuz oldu +File transfer completed: %1 = File transfer completed: %1 Forced First Connect = İlk qoşulmaya güc verdi (daha sürətli qoşulma) GM: Data from Unknown Port = GM: Bilinməyən Port Veriləni Hostname = Sahibin adı @@ -1040,6 +1039,7 @@ UPnP need to be reinitialized = UPnP, yenidən başladılmalıdır UPnP use original port = UPnP doğma portu işlədir (açıqdır = PSP uyumluğu) UseOriginalPort Tip = Bütün qurğular və ya oyunlar üçün işləməyə bilər, vikiyə baxın. Validating address... = Adres doğrulanır... +With a web browser on the same network, go to: = With a web browser on the same network, go to: WLAN Channel = WLAN kanalı You're in Offline Mode, go to lobby or online hall = Siz bağlantısızsınız, girişə ya da çevrimiçi zalına gedin @@ -1157,7 +1157,6 @@ translators5 = translators6 = website = Saytımıza baş çəkin: written = Sürət və daşınabilərlik baxımından C++ ilə yazılıb -X @PPSSPP_emu = X @PPSSPP_emu [RemoteISO] Browse Games = Oyunlara göz at diff --git a/assets/lang/de_DE.ini b/assets/lang/de_DE.ini index 8de15062e4..8a9f5e3d49 100644 --- a/assets/lang/de_DE.ini +++ b/assets/lang/de_DE.ini @@ -72,6 +72,7 @@ Audio file format not supported. Must be WAV or MP3. = Audio-Dateiformat wird ni Audio playback = Audio-Wiedergabe AudioBufferingForBluetooth = Bluetooth-freundliche Pufferung (langsamer) Auto = Autom. +Buffer size = Buffer size Classic (lowest latency) = Klassisch (niedrigste Latenz) Device = Gerät Disabled = Deaktiviert @@ -250,6 +251,7 @@ Nearest = Nächster Nachbar Pause when not focused = Pausieren im Hintergrund Recent = &Zuletzt Restart Graphics = Grafiken neu starten +Save frame dump = Save frame d&ump Skip Buffer Effects = Puffereffekte überspringen Off = Aus Open Chat = Chat öffnen @@ -320,6 +322,7 @@ Enable driver bug workarounds = Treiberfehler-Umgehungen aktivieren Enable Logging = Fehlerbehebungs-Protokollierung aktivieren Enable shader cache = Schattierer-Cache aktivieren Enter address = Adresse eingeben +Fast = Fast FPU = FPU Fragment = Fragment Frame timing = Einzelbild-Timing @@ -331,6 +334,7 @@ GPU Allocator Viewer = GPU-Allokator-Anzeige GPU Driver Test = GPU-Treibertest GPU log profiler = GPU Protokollprofilierer GPU Profile = GPU-Profil +Instant (may stutter) = Instant (may stutter) Jit Compare = JIT-Vergleich JIT debug tools = JIT-Fehlerbehebungs-Werkzeuge Log Dropped Frame Statistics = Statistik für fehlende Einzelbilder protokollieren @@ -338,14 +342,17 @@ Log Level = Protokollierungsstufe Log to file = In Datei protokollieren Log View = Protokollansicht Logging Channels = Protkollkanäle +Medium = Medium Multi-threaded rendering = Multi-threaded rendering Next = Nächstes No block = Kein Block Off = Aus Prev = Vorheriges +Prevent loading overlays = Prevent loading overlays Random = Zufall Remote debugger = Fern-Debugger Replace textures = Texturen ersetzen +Replacement texture load speed = Replacement texture load speed Reset = Zurücksetzen Reset limited logging = Eingeschränkte Protokollierung zurücksetzen RestoreDefaultSettings = Alle Einstellungen auf ihre Vorgabewerte zurücksetzen?\nDies kann nicht rückgängig gemacht werden.\nBitte starte PPSSPP nach Wiederherstellung neu. @@ -355,12 +362,12 @@ Save new textures = Neue Texturen speichern Shader Viewer = Schattierer-Anzeige Show GPO LEDs = GPO-LEDs anzeigen Show in-game developer menu = Entwicklermenü anzeigen +Slow (smooth) = Slow (smooth) Stats = Statistiken System Information = Systeminformationen Tests = Tests Texture ini file created = Textur-ini-Datei erstellt Texture Replacement = Texturaustausch -Toggle Debugger = Fehlerbeheber umschalten Audio Debug = Audio-Fehlerbehebung Control Debug = Steuerungs-Fehlerbehebung Toggle Freeze = Einfrieren umschalten @@ -449,6 +456,7 @@ Logging in... = Anmeldung... More info = Weitere Infos Move = Bewegen Move Down = Abwärts bewegen +Move to trash = Move to trash Move Up = Aufwärts bewegen Network Connection = Netzwerkverbindung NEW DATA = NEUE DATEN @@ -485,6 +493,7 @@ SSID = SSID Submit = Einreichen Supported = Unterstützt There is no data = Keine Daten vorhanden +This change will not take effect until PPSSPP is restarted. = This change will not take effect until PPSSPP is restarted. This will overwrite the existing configuration = Dies überschreibt die vorhandene Konfiguration # AI translated Toggle All = Alle umschalten Toggle List = Liste umschalten @@ -904,10 +913,11 @@ Swipe Up = Aufwärts wischen tap to customize = zum Anpassen antippen Texture Dumping = Texturspeicherung Texture Replacement = Texturersetzung +Toggle Debugger = Fehlerbeheber umschalten Toggle Fullscreen = Vollbild umschalten Toggle mode = Modus umschalten Toggle mouse input = Mauseingabe umschalten -Toggle tilt control = Toggle tilt control +Toggle tilt control = Neigungskontrolle umschalten Toggle touch controls = Berührungssteuerung umschalten Toggle WLAN = WLAN umschalten Triangle = Dreieck @@ -1307,6 +1317,7 @@ DPI = DPI Driver bugs = Treiberfehler Driver Version = Treiberversion EGL Extensions = EGL-Erweiterungen +Font cache = Font cache Frames per buffer = Einzelbilder pro Zwischenspeicher GPU Flags = GPU Flags GPU Information = GPU-Information @@ -1436,6 +1447,7 @@ PSP Settings = PSP-Einstellungen PSP-1000 = PSP-1000 PSP-2000/3000 = PSP-2000/3000 Raw game image = Rohes Spielbild +Recent games = Recent games Record Audio = Ton aufzeichnen Record Display = Bildschirm aufzeichnen Recording = Aufnahme diff --git a/assets/lang/en_US.ini b/assets/lang/en_US.ini index 90670eb2bc..1ad916f0db 100644 --- a/assets/lang/en_US.ini +++ b/assets/lang/en_US.ini @@ -1001,6 +1001,7 @@ Network connected = Network connected Network functionality in this game is not guaranteed = Network functionality in this game is not guaranteed Network initialized = Network initialized Other versions of this game that should work: = Other versions of this game that should work: +PacketRelayHint = Available on servers that provide 'aemu_postoffice' packet relay, like socom.cc. Disable this for LAN or VPN play. Can be more reliable, but sometimes slower. P2P mode = P2P mode Please change your Port Offset = Please change your port offset Port offset = Port offset (0 = PSP compatibility) diff --git a/assets/lang/fi_FI.ini b/assets/lang/fi_FI.ini index 0373a223e1..879253f559 100644 --- a/assets/lang/fi_FI.ini +++ b/assets/lang/fi_FI.ini @@ -597,6 +597,7 @@ Remove From Recent = Poista "äskettäin" listalta... SaveData = Tallennustieto Setting Background = Taustakuvan asetus ime Played: %1h %2m %3s = Pelattu aika: %1t %2m %3s +Time Played: %1h %2m %3s = Time Played: %1h %2m %3s Uncompressed = Pakkauksen purku tehty USA = USA Use background as UI background = Käytä käyttöliittymän taustakuvaa diff --git a/assets/lang/he_IL_invert.ini b/assets/lang/he_IL_invert.ini index 3ec36a4f3e..12b50a3d27 100644 --- a/assets/lang/he_IL_invert.ini +++ b/assets/lang/he_IL_invert.ini @@ -439,6 +439,7 @@ Finish = םייס GE Frame Dumps = GE Frame Dumps GoldOverview1 = Buying PPSSPP Gold supports the PPSSPP project.\nIt also gives you a shiny icon to show off! GoldOverview2 = Your support is what makes it possible for me to continue spending so much time on PPSSPP. Thank you! +GoldThankYou = Thank you for supporting the PPSSPP project! Grid = Grid Inactive = Inactive Installing... = Installing... @@ -453,6 +454,7 @@ Log in = Log in Log out = Log out Logged in! = Logged in! Logging in... = Logging in... +More info = More info Move = Move Move Down = Move Down Move to trash = Move to trash @@ -471,6 +473,7 @@ Remove = Remove Reset = Reset Resize = Resize Restart = Restart +Restore purchase = Restore purchase Retry = Retry Right side = ןימ יצד # AI translated Save = Save diff --git a/assets/lang/it_IT.ini b/assets/lang/it_IT.ini index c1293d03ed..0128832da8 100644 --- a/assets/lang/it_IT.ini +++ b/assets/lang/it_IT.ini @@ -208,7 +208,7 @@ Backend = Rendering di fondo (riavvia il PPSSPP) Bicubic = Bicubico Break = Interruzione Break on Load = Fermati al caricamento -Buy Gold = Acquista la Versione Gold +Buy PPSSPP Gold = Compra PPSSPP Gold Control Mapping... = Impostazioni dei Controlli... Copy PSP memory base address = Copia indirizzo base di memoria PSP Debugging = Debug diff --git a/assets/lang/pl_PL.ini b/assets/lang/pl_PL.ini index a771a3d992..ad5622e757 100644 --- a/assets/lang/pl_PL.ini +++ b/assets/lang/pl_PL.ini @@ -78,6 +78,7 @@ Device = Urządzenie Disabled = Wył. Enable Sound = Włącz dźwięk Fill audio gaps = Wypełnij luki dźwiękowe +Game preview volume = Game preview volume Game volume = Głośność globalna Microphone = Mikrofon Microphone Device = Mikrofon @@ -417,6 +418,7 @@ DeleteConfirm = Dane zapisu zostaną usunięte. Czy na pewno chcesz kontynuować DeleteConfirmAll = Czy na pewno chcesz usunąć wszystkie dane zapisu tej gry? DeleteConfirmGame = Czy na pewno chcesz usunąć tę grę ze swojego urządzenia? Nie można tego cofnąć. DeleteConfirmGameConfig = Czy na pewno chcesz usunąć ustawienia dla tej gry? +DeleteConfirmSaveState = Are you sure you want to permanently delete this save state? DeleteFailed = Nie można usunąć danych. Deleting = Usuwanie\nProszę czekać... Details = Zmiany @@ -607,6 +609,7 @@ Use background as UI background = Użyj tego tła % of the void = % pustej przestrzeni % of viewport = % widocznego obszaru %, 0:unlimited = %, 0 = bez limitu +'Mailbox' (lower latency, recommended) = 'Mailbox' (lower latency, recommended) (supersampling) = (supersampling) (upscaling) = (skalowanie) 1x PSP = 1× PSP @@ -673,8 +676,12 @@ Driver requires Android API version %1, current is %2 = Sterownik wymaga wersji Drivers = Sterowniki Enable Cardboard VR = Aktywuj Cardboard VR Faster, input lag = Szybsze, może powodować lagi sterowania +FIFO (higher latency, framerate stability) = FIFO (higher latency, framerate stability) +FIFO: latest ready = FIFO: latest ready +FIFO: relaxed = FIFO: relaxed Force 60 Hz = Force 60 Hz FPS = Tylko FPS +Frame presentation mode = Frame presentation mode Frame Rate Control = Kontrola klatek na sekundę Frame Skipping = Pomijanie klatek Framerate mode = Tryb liczby klatek @@ -690,6 +697,7 @@ High = Wysokie Hybrid = Hybrydowe Hybrid + Bicubic = Hybrydowe + Dwusześcienne Ignore camera notch when centering = Ignoruj przesunięcie kamery podczas centrowania +Immediate (lower latency, tearing) = Immediate (lower latency, tearing) Install custom driver... = Zainstaluj niestandardowy sterownik... Integer scale factor = Całkowity współczynnik skali Internal Resolution = Rozdzielczość wewnętrzna @@ -764,6 +772,7 @@ VSync = Synchronizacja pionowa Vulkan = Vulkan Window Size = Rozmiar okna xBRZ = xBRZ +Your display is set to a low refresh rate: %1 Hz. 60 Hz or higher is recommended. = Your display is set to a low refresh rate: %1 Hz. 60 Hz or higher is recommended. [InstallZip] Data to import = Dane do importu @@ -1068,6 +1077,7 @@ Settings = Ustawienia Switch UMD = Podmień UMD Undo last load = Cofnij ostatnio wczytane Undo last save = Cofnij ostatni zapis +Using save states is not recommended in this game = Using save states is not recommended in this game [PostShaders] (duplicated setting, previous slider will be used) = (zduplikowane ustawienia; użyte zostanie poprzednie ustawienie) @@ -1111,6 +1121,7 @@ Strength = Siła Tex4xBRZ = 4xBRZ TexMMPX = MMPX UpscaleBicubic = UpscaleBicubic +UpscaleSharpBilinear = Sharp bilinear upscaler UpscaleSpline36 = Skalowanie Spline36 VideoSmoothingAA = Wygładzanie wideo Vignette = Winieta diff --git a/assets/lang/pt_BR.ini b/assets/lang/pt_BR.ini index 1d1d7fc96b..dcd38dcd94 100644 --- a/assets/lang/pt_BR.ini +++ b/assets/lang/pt_BR.ini @@ -1002,6 +1002,7 @@ Network functionality in this game is not guaranteed =A funcionalidade da rede n Network initialized = Rede inicializada Other versions of this game that should work: = Outras versões deste jogo que devem funcionar: P2P mode = Modo P2P # AI translated +PacketRelayHint = Available on servers that provide 'aemu_postoffice' packet relay, like socom.cc. Disable this for LAN or VPN play. Can be more reliable, but sometimes slower. Please change your Port Offset = Por favor mude seu deslocamento da porta Port offset = Deslocamento da porta (0 = Compatibilidade com o PSP) Open PPSSPP Multiplayer Wiki Page = Abrir a Página do Multiplayer do Wiki do PPSSPP diff --git a/assets/lang/pt_PT.ini b/assets/lang/pt_PT.ini index 709f1bd1df..3613ee11be 100644 --- a/assets/lang/pt_PT.ini +++ b/assets/lang/pt_PT.ini @@ -672,6 +672,7 @@ CPU texture upscaler (slow) = Tipo de ampliação (CPU) Current GPU driver = Driver atual da GPU Default GPU driver = Driver padrão da GPU Disable culling = Desativar culling +Disabled = Disabled Display = Tela Display layout & effects = Mostrar o editor dos esquemas Display rotation = Rotação da tela diff --git a/assets/lang/th_TH.ini b/assets/lang/th_TH.ini index 88c4b705b8..06b17a0c43 100644 --- a/assets/lang/th_TH.ini +++ b/assets/lang/th_TH.ini @@ -692,8 +692,7 @@ Faster, input lag = เร็วขึ้น, อาจทำให้เกิ FIFO (higher latency, framerate stability) = FIFO (ความหน่วงสูงขึ้น, ความเสถียรของอัตราเฟรม) FIFO: latest ready = FIFO: ล่าสุดพร้อม FIFO: relaxed = FIFO: ผ่อนคลาย -Force 60 Hz = Force 60 Hz -Force 60Hz = บังคับที่ 60Hz +Force 60 Hz = บังคับที่ 60Hz FPS = เฟรมต่อวินาที Frame presentation mode = โหมดการแสดงเฟรม Frame Rate Control = การควบคุมเฟรมเรท @@ -749,8 +748,7 @@ RenderDuplicateFrames Tip = ช่วยให้ภาพดูลื่นต Rendering Mode = โหมดที่ใช้ในการแสดงผล Rendering Resolution = ความละเอียดในการแสดงผลภาพ RenderingMode NonBuffered Tip = เร็วขึ้นก็จริง แต่กราฟิกอาจจะขาดหายไปในบางเกม -Request 60 Hz = Request 60 Hz -Request 60Hz = ต้องการที่ 60Hz +Request 60 Hz = ต้องการที่ 60Hz Rotate controls = หมุนการควบคุม # AI translated Rotation = หมุนจอ Safe = ปลอดภัย