UI: Use the dynamic Ryujinx/Ryujinx Canary for dialog titles

This commit is contained in:
Evan Husted 2025-01-30 21:57:03 -06:00
parent 196b2eaf66
commit 6d75410bd2
4 changed files with 192 additions and 177 deletions

View File

@ -11475,126 +11475,126 @@
{ {
"ID": "DialogConfirmationTitle", "ID": "DialogConfirmationTitle",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - تأكيد", "ar_SA": "{0} - تأكيد",
"de_DE": "Ryujinx - Bestätigung", "de_DE": "{0} - Bestätigung",
"el_GR": "Ryujinx - Επιβεβαίωση", "el_GR": "{0} - Επιβεβαίωση",
"en_US": "Ryujinx - Confirmation", "en_US": "{0} - Confirmation",
"es_ES": "Ryujinx - Confirmación", "es_ES": "{0} - Confirmación",
"fr_FR": "", "fr_FR": "",
"he_IL": "ריוג'ינקס - אישור", "he_IL": "{0} - אישור",
"it_IT": "Ryujinx - Conferma", "it_IT": "{0} - Conferma",
"ja_JP": "Ryujinx - 確認", "ja_JP": "{0} - 確認",
"ko_KR": "Ryujinx - 확인", "ko_KR": "{0} - 확인",
"no_NO": "Ryujinx - Bekreftelse", "no_NO": "{0} - Bekreftelse",
"pl_PL": "Ryujinx - Potwierdzenie", "pl_PL": "{0} - Potwierdzenie",
"pt_BR": "Ryujinx - Confirmação", "pt_BR": "{0} - Confirmação",
"ru_RU": "Ryujinx - Подтверждение", "ru_RU": "{0} - Подтверждение",
"sv_SE": "Ryujinx - Bekräftelse", "sv_SE": "{0} - Bekräftelse",
"th_TH": "Ryujinx - ยืนยัน", "th_TH": "{0} - ยืนยัน",
"tr_TR": "Ryujinx - Onay", "tr_TR": "{0} - Onay",
"uk_UA": "Ryujinx - Підтвердження", "uk_UA": "{0} - Підтвердження",
"zh_CN": "Ryujinx - 确认", "zh_CN": "{0} - 确认",
"zh_TW": "Ryujinx - 確認" "zh_TW": "{0} - 確認"
} }
}, },
{ {
"ID": "DialogUpdaterTitle", "ID": "DialogUpdaterTitle",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - المحدث", "ar_SA": "{0} - المحدث",
"de_DE": "", "de_DE": "",
"el_GR": "Ryujinx - Ενημερωτής", "el_GR": "{0} - Ενημερωτής",
"en_US": "Ryujinx - Updater", "en_US": "{0} - Updater",
"es_ES": "Ryujinx - Actualizador", "es_ES": "{0} - Actualizador",
"fr_FR": "Ryujinx - Mise à Jour", "fr_FR": "{0} - Mise à Jour",
"he_IL": "ריוג'ינקס - מעדכן", "he_IL": "{0} - מעדכן",
"it_IT": "Ryujinx - Aggiornamento", "it_IT": "{0} - Aggiornamento",
"ja_JP": "Ryujinx - アップデータ", "ja_JP": "{0} - アップデータ",
"ko_KR": "Ryujinx - 업데이터", "ko_KR": "{0} - 업데이터",
"no_NO": "Ryujinx Oppdaterer", "no_NO": "{0} Oppdaterer",
"pl_PL": "Ryujinx - Asystent aktualizacji", "pl_PL": "{0} - Asystent aktualizacji",
"pt_BR": "Ryujinx - Atualizador", "pt_BR": "{0} - Atualizador",
"ru_RU": "Ryujinx - Обновление", "ru_RU": "{0} - Обновление",
"sv_SE": "Ryujinx - Uppdatering", "sv_SE": "{0} - Uppdatering",
"th_TH": "Ryujinx - อัพเดต", "th_TH": "{0} - อัพเดต",
"tr_TR": "Ryujinx - Güncelleyici", "tr_TR": "{0} - Güncelleyici",
"uk_UA": "Ryujinx - Програма оновлення", "uk_UA": "{0} - Програма оновлення",
"zh_CN": "Ryujinx - 更新", "zh_CN": "{0} - 更新",
"zh_TW": "Ryujinx - 更新程式" "zh_TW": "{0} - 更新程式"
} }
}, },
{ {
"ID": "DialogErrorTitle", "ID": "DialogErrorTitle",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - خطأ", "ar_SA": "{0} - خطأ",
"de_DE": "Ryujinx - Fehler", "de_DE": "{0} - Fehler",
"el_GR": "Ryujinx - Σφάλμα", "el_GR": "{0} - Σφάλμα",
"en_US": "Ryujinx - Error", "en_US": "{0} - Error",
"es_ES": "", "es_ES": "",
"fr_FR": "Ryujinx - Erreur", "fr_FR": "{0} - Erreur",
"he_IL": "ריוג'ינקס - שגיאה", "he_IL": "{0} - שגיאה",
"it_IT": "Ryujinx - Errore", "it_IT": "{0} - Errore",
"ja_JP": "Ryujinx - エラー", "ja_JP": "{0} - エラー",
"ko_KR": "Ryujinx - 오류", "ko_KR": "{0} - 오류",
"no_NO": "Ryujinx - Feil", "no_NO": "{0} - Feil",
"pl_PL": "Ryujinx - Błąd", "pl_PL": "{0} - Błąd",
"pt_BR": "Ryujinx - Erro", "pt_BR": "{0} - Erro",
"ru_RU": "Ryujinx - Ошибка", "ru_RU": "{0} - Ошибка",
"sv_SE": "Ryujinx - Fel", "sv_SE": "{0} - Fel",
"th_TH": "Ryujinx - ผิดพลาด", "th_TH": "{0} - ผิดพลาด",
"tr_TR": "Ryujinx - Hata", "tr_TR": "{0} - Hata",
"uk_UA": "Ryujinx - Помилка", "uk_UA": "{0} - Помилка",
"zh_CN": "Ryujinx - 错误", "zh_CN": "{0} - 错误",
"zh_TW": "Ryujinx - 錯誤" "zh_TW": "{0} - 錯誤"
} }
}, },
{ {
"ID": "DialogWarningTitle", "ID": "DialogWarningTitle",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - تحذير", "ar_SA": "{0} - تحذير",
"de_DE": "Ryujinx - Warnung", "de_DE": "{0} - Warnung",
"el_GR": "Ryujinx - Προειδοποίηση", "el_GR": "{0} - Προειδοποίηση",
"en_US": "Ryujinx - Warning", "en_US": "{0} - Warning",
"es_ES": "Ryujinx - Advertencia", "es_ES": "{0} - Advertencia",
"fr_FR": "Ryujinx - Avertissement", "fr_FR": "{0} - Avertissement",
"he_IL": "ריוג'ינקס - אזהרה", "he_IL": "{0} - אזהרה",
"it_IT": "Ryujinx - Avviso", "it_IT": "{0} - Avviso",
"ja_JP": "Ryujinx - 警告", "ja_JP": "{0} - 警告",
"ko_KR": "Ryujinx - 경고", "ko_KR": "{0} - 경고",
"no_NO": "Ryujinx - Advarsel", "no_NO": "{0} - Advarsel",
"pl_PL": "Ryujinx - Ostrzeżenie", "pl_PL": "{0} - Ostrzeżenie",
"pt_BR": "Ryujinx - Alerta", "pt_BR": "{0} - Alerta",
"ru_RU": "Ryujinx - Предупреждение", "ru_RU": "{0} - Предупреждение",
"sv_SE": "Ryujinx - Varning", "sv_SE": "{0} - Varning",
"th_TH": "Ryujinx - คำเตือน", "th_TH": "{0} - คำเตือน",
"tr_TR": "Ryujinx - Uyarı", "tr_TR": "{0} - Uyarı",
"uk_UA": "Ryujinx - Попередження", "uk_UA": "{0} - Попередження",
"zh_CN": "Ryujinx - 警告", "zh_CN": "{0} - 警告",
"zh_TW": "Ryujinx - 警告" "zh_TW": "{0} - 警告"
} }
}, },
{ {
"ID": "DialogExitTitle", "ID": "DialogExitTitle",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - الخروج", "ar_SA": "{0} - الخروج",
"de_DE": "Ryujinx - Beenden", "de_DE": "{0} - Beenden",
"el_GR": "Ryujinx - Έξοδος", "el_GR": "{0} - Έξοδος",
"en_US": "Ryujinx - Exit", "en_US": "{0} - Exit",
"es_ES": "Ryujinx - Salir", "es_ES": "{0} - Salir",
"fr_FR": "Ryujinx - Quitter", "fr_FR": "{0} - Quitter",
"he_IL": "ריוג'ינקס - יציאה", "he_IL": "{0} - יציאה",
"it_IT": "Ryujinx - Esci", "it_IT": "{0} - Esci",
"ja_JP": "Ryujinx - 終了", "ja_JP": "{0} - 終了",
"ko_KR": "Ryujinx - 종료", "ko_KR": "{0} - 종료",
"no_NO": "Ryujinx - Avslutt", "no_NO": "{0} - Avslutt",
"pl_PL": "Ryujinx - Wyjdź", "pl_PL": "{0} - Wyjdź",
"pt_BR": "Ryujinx - Sair", "pt_BR": "{0} - Sair",
"ru_RU": "Ryujinx - Выход", "ru_RU": "{0} - Выход",
"sv_SE": "Ryujinx - Avslut", "sv_SE": "{0} - Avslut",
"th_TH": "Ryujinx - ออก", "th_TH": "{0} - ออก",
"tr_TR": "Ryujinx - Çıkış", "tr_TR": "{0} - Çıkış",
"uk_UA": "Ryujinx - Вихід", "uk_UA": "{0} - Вихід",
"zh_CN": "Ryujinx - 退出", "zh_CN": "{0} - 退出",
"zh_TW": "Ryujinx - 結束" "zh_TW": "{0} - 結束"
} }
}, },
{ {
@ -17025,26 +17025,26 @@
{ {
"ID": "DialogStopEmulationTitle", "ID": "DialogStopEmulationTitle",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - إيقاف المحاكاة", "ar_SA": "{0} - إيقاف المحاكاة",
"de_DE": "Ryujinx - Beende Emulation", "de_DE": "{0} - Beende Emulation",
"el_GR": "Ryujinx - Διακοπή εξομοίωσης", "el_GR": "{0} - Διακοπή εξομοίωσης",
"en_US": "Ryujinx - Stop Emulation", "en_US": "{0} - Stop Emulation",
"es_ES": "Ryujinx - Detener emulación", "es_ES": "{0} - Detener emulación",
"fr_FR": "Ryujinx - Arrêt de l'émulation", "fr_FR": "{0} - Arrêt de l'émulation",
"he_IL": "ריוג'ינקס - עצור אמולציה", "he_IL": "{0} - עצור אמולציה",
"it_IT": "Ryujinx - Ferma emulazione", "it_IT": "{0} - Ferma emulazione",
"ja_JP": "Ryujinx - エミュレーションを中止", "ja_JP": "{0} - エミュレーションを中止",
"ko_KR": "Ryujinx - 에뮬레이션 중지", "ko_KR": "{0} - 에뮬레이션 중지",
"no_NO": "Ryujinx - Stopp emulasjon", "no_NO": "{0} - Stopp emulasjon",
"pl_PL": "Ryujinx - Zatrzymaj Emulację", "pl_PL": "{0} - Zatrzymaj Emulację",
"pt_BR": "Ryujinx - Parar emulação", "pt_BR": "{0} - Parar emulação",
"ru_RU": "Ryujinx - Остановка эмуляции", "ru_RU": "{0} - Остановка эмуляции",
"sv_SE": "Ryujinx - Stoppa emulering", "sv_SE": "{0} - Stoppa emulering",
"th_TH": "Ryujinx - หยุดการจำลอง", "th_TH": "{0} - หยุดการจำลอง",
"tr_TR": "Ryujinx - Emülasyonu Durdur", "tr_TR": "{0} - Emülasyonu Durdur",
"uk_UA": "Ryujinx - Зупинити емуляцію", "uk_UA": "{0} - Зупинити емуляцію",
"zh_CN": "Ryujinx - 停止模拟", "zh_CN": "{0} - 停止模拟",
"zh_TW": "Ryujinx - 停止模擬" "zh_TW": "{0} - 停止模擬"
} }
}, },
{ {
@ -17950,51 +17950,51 @@
{ {
"ID": "RyujinxInfo", "ID": "RyujinxInfo",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - معلومات", "ar_SA": "{0} - معلومات",
"de_DE": "", "de_DE": "",
"el_GR": "Ryujinx - Πληροφορίες", "el_GR": "{0} - Πληροφορίες",
"en_US": "Ryujinx - Info", "en_US": "{0} - Info",
"es_ES": "", "es_ES": "",
"fr_FR": "", "fr_FR": "",
"he_IL": "ריוג'ינקס - מידע", "he_IL": "{0} - מידע",
"it_IT": "Ryujinx - Informazioni", "it_IT": "{0} - Informazioni",
"ja_JP": "Ryujinx - 情報", "ja_JP": "{0} - 情報",
"ko_KR": "Ryujinx - 정보", "ko_KR": "{0} - 정보",
"no_NO": "Ryujinx - Informasjon", "no_NO": "{0} - Informasjon",
"pl_PL": "", "pl_PL": "",
"pt_BR": "Ryujinx - Informação", "pt_BR": "{0} - Informação",
"ru_RU": "Ryujinx - Информация", "ru_RU": "{0} - Информация",
"sv_SE": "", "sv_SE": "",
"th_TH": "Ryujinx ข้อมูล", "th_TH": "{0} ข้อมูล",
"tr_TR": "Ryujinx - Bilgi", "tr_TR": "{0} - Bilgi",
"uk_UA": "Ryujin x - Інформація", "uk_UA": "{0} - Інформація",
"zh_CN": "Ryujinx - 信息", "zh_CN": "{0} - 信息",
"zh_TW": "Ryujinx - 資訊" "zh_TW": "{0} - 資訊"
} }
}, },
{ {
"ID": "RyujinxConfirm", "ID": "RyujinxConfirm",
"Translations": { "Translations": {
"ar_SA": "ريوجينكس - تأكيد", "ar_SA": "{0} - تأكيد",
"de_DE": "Ryujinx - Bestätigung", "de_DE": "{0} - Bestätigung",
"el_GR": "Ryujinx - Επιβεβαίωση", "el_GR": "{0} - Επιβεβαίωση",
"en_US": "Ryujinx - Confirmation", "en_US": "{0} - Confirmation",
"es_ES": "Ryujinx - Confirmación", "es_ES": "{0} - Confirmación",
"fr_FR": "", "fr_FR": "",
"he_IL": "ריוג'ינקס - אישור", "he_IL": "{0} - אישור",
"it_IT": "Ryujinx - Conferma", "it_IT": "{0} - Conferma",
"ja_JP": "Ryujinx - 確認", "ja_JP": "{0} - 確認",
"ko_KR": "Ryujinx - 확인", "ko_KR": "{0} - 확인",
"no_NO": "Ryujinx - Bekreftelse", "no_NO": "{0} - Bekreftelse",
"pl_PL": "Ryujinx - Potwierdzenie", "pl_PL": "{0} - Potwierdzenie",
"pt_BR": "Ryujinx - Confirmação", "pt_BR": "{0} - Confirmação",
"ru_RU": "Ryujinx - Подтверждение", "ru_RU": "{0} - Подтверждение",
"sv_SE": "Ryujinx - Bekräfta", "sv_SE": "{0} - Bekräfta",
"th_TH": "Ryujinx - ยืนยัน", "th_TH": "{0} - ยืนยัน",
"tr_TR": "Ryujinx - Doğrulama", "tr_TR": "{0} - Doğrulama",
"uk_UA": "Ryujinx - Підтвердження", "uk_UA": "{0} - Підтвердження",
"zh_CN": "Ryujinx - 确认", "zh_CN": "{0} - 确认",
"zh_TW": "Ryujinx - 確認" "zh_TW": "{0} - 確認"
} }
}, },
{ {
@ -18800,26 +18800,26 @@
{ {
"ID": "RyujinxUpdater", "ID": "RyujinxUpdater",
"Translations": { "Translations": {
"ar_SA": "محدث ريوجينكس", "ar_SA": "محدث {0}",
"de_DE": "Ryujinx - Updater", "de_DE": "",
"el_GR": "Ryujinx Ενημερωτής", "el_GR": "{0} Ενημερωτής",
"en_US": "Ryujinx Updater", "en_US": "{0} Updater",
"es_ES": "Actualizador de Ryujinx", "es_ES": "Actualizador de {0}",
"fr_FR": "Mise à jour de Ryujinx", "fr_FR": "Mise à jour de {0}",
"he_IL": "מעדכן ריוג'ינקס", "he_IL": "מעדכן {0}",
"it_IT": "Aggiornamento di Ryujinx", "it_IT": "Aggiornamento di {0}",
"ja_JP": "Ryujinx アップデータ", "ja_JP": "{0} アップデータ",
"ko_KR": "Ryujinx 업데이터", "ko_KR": "{0} 업데이터",
"no_NO": "Ryujinx Oppgradering", "no_NO": "{0} Oppgradering",
"pl_PL": "Aktualizator Ryujinx", "pl_PL": "Aktualizator {0}",
"pt_BR": "Atualizador do Ryujinx", "pt_BR": "Atualizador do {0}",
"ru_RU": "Ryujinx - Обновление", "ru_RU": "{0} Обновление",
"sv_SE": "Uppdaterare för Ryujinx", "sv_SE": "Uppdaterare för {0}",
"th_TH": "ตัวอัปเดต Ryujinx", "th_TH": "ตัวอัปเดต {0}",
"tr_TR": "Ryujinx Güncelleyicisi", "tr_TR": "{0} Güncelleyicisi",
"uk_UA": "Програма оновлення Ryujinx", "uk_UA": "Програма оновлення {0}",
"zh_CN": "Ryujinx 更新", "zh_CN": "{0} 更新",
"zh_TW": "Ryujinx 更新程式" "zh_TW": "{0} 更新程式"
} }
}, },
{ {

View File

@ -44,6 +44,16 @@ namespace Ryujinx.Ava.Common.Locale
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath); ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
} }
SetDynamicValues(LocaleKeys.DialogConfirmationTitle, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.DialogUpdaterTitle, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.DialogErrorTitle, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.DialogWarningTitle, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.DialogExitTitle, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.DialogStopEmulationTitle, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.RyujinxInfo, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.RyujinxConfirm, RyujinxApp.FullAppName);
SetDynamicValues(LocaleKeys.RyujinxUpdater, RyujinxApp.FullAppName);
} }
public string this[LocaleKeys key] public string this[LocaleKeys key]
@ -88,11 +98,16 @@ namespace Ryujinx.Ava.Common.Locale
public static string FormatDynamicValue(LocaleKeys key, params object[] values) public static string FormatDynamicValue(LocaleKeys key, params object[] values)
=> Instance.UpdateAndGetDynamicValue(key, values); => Instance.UpdateAndGetDynamicValue(key, values);
public string UpdateAndGetDynamicValue(LocaleKeys key, params object[] values) public void SetDynamicValues(LocaleKeys key, params object[] values)
{ {
_dynamicValues[key] = values; _dynamicValues[key] = values;
OnPropertyChanged("Translation"); OnPropertyChanged("Translation");
}
public string UpdateAndGetDynamicValue(LocaleKeys key, params object[] values)
{
SetDynamicValues(key, values);
return this[key]; return this[key];
} }

View File

@ -22,12 +22,12 @@ namespace Ryujinx.Ava
{ {
public class RyujinxApp : Application public class RyujinxApp : Application
{ {
internal static string FormatTitle(LocaleKeys? windowTitleKey = null) internal static string FormatTitle(LocaleKeys? windowTitleKey = null, bool includeVersion = true)
=> windowTitleKey is null => windowTitleKey is null
? $"{FullAppName} {Program.Version}" ? $"{FullAppName}{(includeVersion ? $" {Program.Version}" : string.Empty)}"
: $"{FullAppName} {Program.Version} - {LocaleManager.Instance[windowTitleKey.Value]}"; : $"{FullAppName}{(includeVersion ? $" {Program.Version}" : string.Empty)} - {LocaleManager.Instance[windowTitleKey.Value]}";
public static readonly string FullAppName = ReleaseInformation.IsCanaryBuild ? "Ryujinx Canary" : "Ryujinx"; public static readonly string FullAppName = string.Intern(ReleaseInformation.IsCanaryBuild ? "Ryujinx Canary" : "Ryujinx");
public static MainWindow MainWindow => Current! public static MainWindow MainWindow => Current!
.ApplicationLifetime.Cast<IClassicDesktopStyleApplicationLifetime>() .ApplicationLifetime.Cast<IClassicDesktopStyleApplicationLifetime>()

View File

@ -302,7 +302,7 @@ namespace Ryujinx.Ava.UI.Windows
LinuxHelper.RecommendedVmMaxMapCount); LinuxHelper.RecommendedVmMaxMapCount);
UserResult response = await ContentDialogHelper.ShowTextDialog( UserResult response = await ContentDialogHelper.ShowTextDialog(
$"Ryujinx - {LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogTitle]}", RyujinxApp.FormatTitle(LocaleKeys.LinuxVmMaxMapCountDialogTitle, false),
LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogTextPrimary], LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogTextPrimary],
LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogTextSecondary], LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogTextSecondary],
LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogButtonUntilRestart], LocaleManager.Instance[LocaleKeys.LinuxVmMaxMapCountDialogButtonUntilRestart],