diff --git a/RemnantSaveGuardian/App.config b/RemnantSaveGuardian/App.config
index 2632aa2..fef8e07 100644
--- a/RemnantSaveGuardian/App.config
+++ b/RemnantSaveGuardian/App.config
@@ -115,6 +115,9 @@
650
+
+
+
\ No newline at end of file
diff --git a/RemnantSaveGuardian/App.xaml.cs b/RemnantSaveGuardian/App.xaml.cs
index 5ed42cd..482f501 100644
--- a/RemnantSaveGuardian/App.xaml.cs
+++ b/RemnantSaveGuardian/App.xaml.cs
@@ -2,11 +2,16 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using RemnantSaveGuardian.Models;
+using RemnantSaveGuardian.Properties;
using RemnantSaveGuardian.Services;
+using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Reflection;
+using System.Resources;
using System.Threading;
using System.Windows;
using System.Windows.Markup;
@@ -81,15 +86,32 @@ public static T GetService()
private async void OnStartup(object sender, StartupEventArgs e)
{
var culture = CultureInfo.CurrentCulture;
- //var culture = new CultureInfo("zh-TW");
+ var cultures = EnumerateSupportedCultures();
+ Current.Properties["langs"] = cultures;
+ if(Settings.Default.Language != "")
+ {
+ culture = cultures.First(e => e.Name == Settings.Default.Language);
+ }
+
Thread.CurrentThread.CurrentCulture = culture;
WPFLocalizeExtension.Engine.LocalizeDictionary.Instance.Culture = culture;
+
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
- new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
+ new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(culture.IetfLanguageTag)));
await _host.StartAsync();
}
+ private CultureInfo[] EnumerateSupportedCultures()
+ {
+ CultureInfo[] culture = CultureInfo.GetCultures(CultureTypes.AllCultures);
+
+ string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
+
+ var c = culture.Where(cultureInfo => Directory.Exists(Path.Combine(exeLocation, cultureInfo.Name)) && cultureInfo.Name != "").ToArray();
+ return c;
+ }
+
///
/// Occurs when the application is closing.
///
diff --git a/RemnantSaveGuardian/LocalizationProvider.cs b/RemnantSaveGuardian/LocalizationProvider.cs
index 88606b8..c906c56 100644
--- a/RemnantSaveGuardian/LocalizationProvider.cs
+++ b/RemnantSaveGuardian/LocalizationProvider.cs
@@ -78,11 +78,18 @@ public static string GameT(string key)
{
return T(key, new LocalizationOptions { { "namespace", "GameStrings" } });
}
-
- public static List AvailableLocalizations()
+ public static bool Has(string key, LocalizationOptions options)
+ {
+ var val = GetLocalizedValue(key, options);
+ if (val == null || val == "")
+ {
+ return false;
+ }
+ return true;
+ }
+ public static bool GameTHas(string key)
{
- var cultures = WPFLocalizeExtension.Engine.LocalizeDictionary.Instance.MergedAvailableCultures;
- return cultures.Select(c => c.Name).ToList();
+ return Has(key, new LocalizationOptions { { "namespace", "GameStrings" } });
}
}
diff --git a/RemnantSaveGuardian/Properties/Settings.Designer.cs b/RemnantSaveGuardian/Properties/Settings.Designer.cs
index 7111518..efb6f45 100644
--- a/RemnantSaveGuardian/Properties/Settings.Designer.cs
+++ b/RemnantSaveGuardian/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace RemnantSaveGuardian.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -454,5 +454,17 @@ public int WindowHeight {
this["WindowHeight"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string Language {
+ get {
+ return ((string)(this["Language"]));
+ }
+ set {
+ this["Language"] = value;
+ }
+ }
}
}
diff --git a/RemnantSaveGuardian/Properties/Settings.settings b/RemnantSaveGuardian/Properties/Settings.settings
index 5eaa989..422f344 100644
--- a/RemnantSaveGuardian/Properties/Settings.settings
+++ b/RemnantSaveGuardian/Properties/Settings.settings
@@ -110,5 +110,8 @@
650
+
+
+
\ No newline at end of file
diff --git a/RemnantSaveGuardian/Views/Pages/BackupsPage.xaml.cs b/RemnantSaveGuardian/Views/Pages/BackupsPage.xaml.cs
index 37165c1..c287c4c 100644
--- a/RemnantSaveGuardian/Views/Pages/BackupsPage.xaml.cs
+++ b/RemnantSaveGuardian/Views/Pages/BackupsPage.xaml.cs
@@ -89,7 +89,7 @@ public BackupsPage(ViewModels.BackupsViewModel viewModel)
SaveWatcher.SaveUpdated += SaveWatcher_SaveUpdated;
btnStartGame.IsEnabled = !IsRemnantRunning();
-
+ Properties.Settings.Default.PropertyChanged += Default_PropertyChanged;
loadBackups();
} catch (Exception ex) {
Logger.Error($"Error loading backups page: {ex}");
@@ -771,6 +771,12 @@ private void refreshBackups()
dataBackups.ItemsSource = listBackups;
dataBackups.Items.SortDescriptions.Add(sorting);
}
+
+ private void Default_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if(e.PropertyName == "Language")
+ dataBackups.Items.Refresh();
+ }
}
public class BackupSaveViewedEventArgs : EventArgs
diff --git a/RemnantSaveGuardian/Views/Pages/SettingsPage.xaml b/RemnantSaveGuardian/Views/Pages/SettingsPage.xaml
index fe794b4..5cefedd 100644
--- a/RemnantSaveGuardian/Views/Pages/SettingsPage.xaml
+++ b/RemnantSaveGuardian/Views/Pages/SettingsPage.xaml
@@ -112,11 +112,17 @@
+
+
+
+
-
+
+
+
e.NativeName);
+ if (Properties.Settings.Default.Language != "")
+ {
+ cmbSwitchLanguage.SelectedItem = langs.First(e => Properties.Settings.Default.Language == e.Name).NativeName;
+ }
+ else
+ {
+ var culture = Thread.CurrentThread.CurrentCulture;
+
+ if (culture.Parent != null || culture.Name != "pt-BR")
+ cmbSwitchLanguage.SelectedItem = culture.Parent.NativeName;
+ else
+ cmbSwitchLanguage.SelectedItem = culture.NativeName;
+ }
+ cmbSwitchLanguage.SelectionChanged += cmbSwitchLanguage_SelectionChanged;
+
radThemeLight.IsChecked = Properties.Settings.Default.Theme == "Light";
radThemeDark.IsChecked = Properties.Settings.Default.Theme != "Light";
@@ -283,5 +304,20 @@ private void cmbStartPage_SelectionChanged(object sender, SelectionChangedEventA
}
Properties.Settings.Default.StartPage = startPage;
}
+
+ private void cmbSwitchLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (cmbSwitchLanguage.SelectedIndex > -1)
+ {
+ var langs = Application.Current.Properties["langs"] as CultureInfo[];
+ var culture = langs[cmbSwitchLanguage.SelectedIndex];
+
+ Thread.CurrentThread.CurrentCulture = culture;
+ WPFLocalizeExtension.Engine.LocalizeDictionary.Instance.Culture = culture;
+ Application.Current.MainWindow.Language = System.Windows.Markup.XmlLanguage.GetLanguage(culture.IetfLanguageTag);
+ Properties.Settings.Default.Language = langs[cmbSwitchLanguage.SelectedIndex].Name;
+ Logger.Success(Loc.T("Language_change_notice_{chosenLanguage}", new() { { "chosenLanguage", culture.DisplayName } }));
+ }
+ }
}
}
\ No newline at end of file
diff --git a/RemnantSaveGuardian/Views/Pages/WorldAnalyzerPage.xaml.cs b/RemnantSaveGuardian/Views/Pages/WorldAnalyzerPage.xaml.cs
index 0a50fec..120223d 100644
--- a/RemnantSaveGuardian/Views/Pages/WorldAnalyzerPage.xaml.cs
+++ b/RemnantSaveGuardian/Views/Pages/WorldAnalyzerPage.xaml.cs
@@ -170,6 +170,15 @@ private void Default_PropertyChanged(object? sender, System.ComponentModel.Prope
CharacterControl_SelectionChanged(null, null);
});
}
+
+ if(e.PropertyName == "Language")
+ {
+ Dispatcher.Invoke(() =>
+ {
+ reloadEventGrids();
+ CharacterControl_SelectionChanged(null, null);
+ });
+ }
}
private void Data_AutoGeneratingColumn(object? sender, DataGridAutoGeneratingColumnEventArgs e)
@@ -256,7 +265,7 @@ private void CharacterControl_SelectionChanged(object sender, SelectionChangedEv
item.Expanded += GameType_CollapsedExpanded;
itemNode[(int)rItem.ItemMode].Add(item) ;
}
- itemChild[idx].Add(new TreeListClass() { Name = rItem.Name, Notes = $"{Loc.GameT(rItem.ItemNotes)}", Tag = rItem });
+ itemChild[idx].Add(new TreeListClass() { Name = rItem.Name, Notes = Loc.GameTHas($"{rItem.RawName}_Notes") ? Loc.GameT($"{rItem.RawName}_Notes") : rItem.ItemNotes, Tag = rItem });
}
treeMissingItems.ItemsSource = null;
diff --git a/RemnantSaveGuardian/game.json b/RemnantSaveGuardian/game.json
index 246764d..cbb59a5 100644
--- a/RemnantSaveGuardian/game.json
+++ b/RemnantSaveGuardian/game.json
@@ -187,7 +187,8 @@
],
"LivingStone": [
{
- "name": "/Items/Trinkets/Rings/LithicSignet/Ring_LithicSignet"
+ "name": "/Items/Trinkets/Rings/LithicSignet/Ring_LithicSignet",
+ "notes": "Found in The Lament, The Twisted Chantry, or The Chimney locations on Yaesha at the end of a hidden passageway. To open the passageway, locate a room with 4 statues of Pan Warriors and shoot the crystals in their foreheads, opening a hidden stair case in the middle of the room."
}
],
"ThaenLeaf": [
@@ -210,7 +211,8 @@
"name": "/Items/Trinkets/Amulets/MatriarchsInsignia/Amulet_MatriarchsInsignia"
},
{
- "name": "/Items/Trinkets/Amulets/RedDoeSigil/Amulet_RedDoeSigil"
+ "name": "/Items/Trinkets/Amulets/RedDoeSigil/Amulet_RedDoeSigil",
+ "notes": "Awarded after giving the Ornate Lockbox item (unopened) found in The Widow's Court location on Yaesha, to The Eternal Empress at the Red Throne location on Yaesha."
},
{
"name": "/Items/Trinkets/Rings/ZoheesRing/Ring_ZoheesRing"
@@ -224,7 +226,8 @@
"name": "/Items/Trinkets/Rings/FrivolousBand/Ring_FrivolousBand"
},
{
- "name": "/Items/Trinkets/Rings/LodestoneRing/Ring_LodestoneRing"
+ "name": "/Items/Trinkets/Rings/LodestoneRing/Ring_LodestoneRing",
+ "notes": "Awarded from speaking with Bedel of The Vaunnt in the Forbidden Grove location on Yaesha while wearing the Lodestone Crown armor piece."
},
{
"name": "/Items/Trinkets/Rings/BloodJewel/Ring_BloodJewel"
@@ -244,7 +247,8 @@
"name": "/Items/Trinkets/Amulets/RavagersMark/Amulet_RavagersMark"
},
{
- "name": "/Items/Weapons/Melee/Special/FeralJudgment/Weapon_FeralJudgment"
+ "name": "/Items/Weapons/Melee/Special/FeralJudgment/Weapon_FeralJudgment",
+ "notes": "Crafted by McCabe at Ward 13. Requires the Ravager's Maw item, obtained from performing an Alt Kill on the Corrupted Ravager boss in the Ravager's Lair location on Yaesha. The Alt Kill is performed by shooting the Ravager to initate the fight, killing the Red Doe before the Ravager is able to eat it, and then killing the Ravager boss."
},
{
"name": "/Items/Weapons/Melee/Special/RedDoeStaff/Weapon_RedDoeStaff"
@@ -329,7 +333,8 @@
],
"RootHorror": [
{
- "name": "/Items/Trinkets/Rings/TearOfKaeula/Ring_TearOfKaeula"
+ "name": "/Items/Trinkets/Rings/TearOfKaeula/Ring_TearOfKaeula",
+ "notes": "Found in the Kaeula's Rest location on Yaesha, at the foot of a statue, beneath a waterfall."
},
{
"name": "/Items/Mods/Mod_Rootlash/Mod_Rootlash"
@@ -397,7 +402,8 @@
"name": "/Items/Mods/Mod_AstralBurst/Mod_AstralBurst"
},
{
- "name": "/Items/Trinkets/Rings/RingOfOmens/Ring_RingOfOmens"
+ "name": "/Items/Trinkets/Rings/RingOfOmens/Ring_RingOfOmens",
+ "notes": "Found in the Cathedral of Omens location on Yaesha, behind a red trap door on the ground, after solving the Blood Moon puzzle. The trapdoor will only open during the Blood Moon event."
},
{
"name": "/Items/Weapons/LongGuns/Special/Sagittarius/Weapon_Sagittarius"
@@ -431,7 +437,8 @@
"name": "/Items/Mods/Mod_Soulbinder/Mod_Soulbinder"
},
{
- "name": "/Items/Trinkets/Amulets/DownwardSpiral/Amulet_DownwardSpiral"
+ "name": "/Items/Trinkets/Amulets/DownwardSpiral/Amulet_DownwardSpiral",
+ "notes": "Found in the Chimney location on Yaesha, hidden halfway down the staircase in the Crystal Elevator event."
}
],
"TheLament": [
@@ -460,7 +467,8 @@
],
"TheTangle": [
{
- "name": "/Items/Trinkets/Amulets/FullMoonCirclet/Amulet_FullMoonCirclet"
+ "name": "/Items/Trinkets/Amulets/FullMoonCirclet/Amulet_FullMoonCirclet",
+ "notes": "Found in The Imperial Gardens location on Yaesha, in a hidden room below a trapdoor marked with a golden full moon crest. The trapdoor will only open during the Blood Moon event."
},
{
"name": "/Items/Weapons/Melee/Standard/Katana/EdgeOfTheForest/Weapon_EdgeOfTheForest"
@@ -808,11 +816,11 @@
],
"Rookery": [
{
- "name": "/Items/Trinkets/Amulets/EffigyPendant/Amulet_EffigyPendant"
+ "name": "/Items/Trinkets/Amulets/EffigyPendant/Amulet_EffigyPendant",
+ "notes": "Inside lockbox"
},
{
- "name": "/Items/Trinkets/Amulets/CleansingStone/Amulet_CleansingStone",
- "notes": "Inside lockbox"
+ "name": "/Items/Trinkets/Amulets/CleansingStone/Amulet_CleansingStone"
}
],
"FaeArchon": [
@@ -921,23 +929,23 @@
"Nightweb": [
{
"name": "/Items/Weapons/Melee/Special/Dreamcatcher/Weapon_Dreamcatcher",
- "notes": "Nightweb - Nightweaver Stone Doll"
+ "notes": "Awarded by offering the Nightweaver Stone Doll item found in the Tormented Asylum location on Losomn to the Nightweaver's Web event found in the Tormented Asylum location on Losomn. This can be done in any mode that has rolled both locations."
},
{
"name": "/Items/Armor/Base/RelicTesting/TormentedHeart/Relic_Consumable_TormentedHeart",
- "notes": "Nightweb - Override Pin (Nerud)"
+ "notes": "Awarded by offering the Overide Pin item found in the Timeless Horizon location on N'Erud to the Nightweaver's Web event found in the Tormented Asylum location on Losomn. This must be done on a campaign that has rolled both locations."
},
{
"name": "/Items/Trinkets/Rings/RingOfRetribution/Ring_RingOfRetribution",
- "notes": "Nightweb - Charnel House Anklet"
+ "notes": "Awarded by offering the Dria's Anklet item found in the Harvester's Reach location on Losomn to the Nightweaver's Web event found in the Tormented Asylum location on Losomn. This can be done in any mode that has rolled both locations."
},
{
"name": "/Items/Trinkets/Amulets/NightweaversGrudge/Amulet_NightweaversGrudge",
- "notes": "Nightweb - Kolkets Razor (Yaesha)"
+ "notes": "Awarded by offering the Kolkets Razor item found in The Lament location on Yaesha to the Nightweaver's Web event found in the Tormented Asylum location on Losomn. This must be done on a campaign that has rolled both locations."
},
{
"name": "/Items/Weapons/HandGuns/Special/RunePistol/Weapon_RunePistol",
- "notes": "Nightweb - Ravenous Medallion"
+ "notes": "Awarded by offering the Ravenous Medallion item found in the Great Hall location on Losomn to the Nightweaver's Web event found in the Tormented Asylum location on Losomn. This can be done in any mode that has rolled both locations."
}
],
"AllFatherStory": [
@@ -1105,7 +1113,8 @@
"name": "/Items/Trinkets/Amulets/InsulationDriver/Amulet_InsulationDriver"
},
{
- "name": "/Items/Trinkets/Rings/GeneratingBand/Ring_GeneratingBand"
+ "name": "/Items/Trinkets/Rings/GeneratingBand/Ring_GeneratingBand",
+ "notes": "Found in The Hatchery, Void Vessel Facility, Vault of the Formless, or The Putrid Domain locations on N'Erud during the Flooded Room event. Once the event starts, you will have one chance to collect the items in the room before it fills with water."
},
{
"name": "/Items/Trinkets/Rings/SubterfugeLink/Ring_SubterfugeLink"
@@ -1246,7 +1255,8 @@
"name": "/Items/Weapons/Melee/Standard/Hammer/AtomSmasher/Weapon_AtomSmasher"
},
{
- "name": "/Items/Trinkets/Amulets/Hyperconductor/Amulet_Hyperconductor"
+ "name": "/Items/Trinkets/Amulets/Hyperconductor/Amulet_Hyperconductor",
+ "notes": "Found in the Terminus Station location on N'Erud, hidden in a crawlspace to the left of a ladder, in the Train event."
},
{
"name": "/Items/Traits/Core/Footwork/Trait_Footwork"
@@ -1287,7 +1297,7 @@
},
{
"name": "/Items/Armor/Base/RelicTesting/SiphonHeart/Relic_Consumable_SiphonHeart",
- "notes": "give Shining Essence to Custodian"
+ "notes": "give Shining Essence Echo to Custodian"
}
],
"DrzyrReplicator": [
@@ -1319,7 +1329,8 @@
"name": "/Items/Trinkets/Rings/SuppressionWard/Ring_SuppressionWard"
},
{
- "name": "/Items/Trinkets/Amulets/VoidIdol/Amulet_VoidIdol"
+ "name": "/Items/Trinkets/Amulets/VoidIdol/Amulet_VoidIdol",
+ "notes": "use Shining Essence Echo to craft at Drzyr Replicator"
}
],
"NerudGuardian": [
@@ -1439,7 +1450,7 @@
"Ward13": [
{
"name": "/Items/Trinkets/Rings/TarnishedRing/Ring_TarnishedRing",
- "notes": "listen to Earl's rabbit story"
+ "notes": "Awarded from speaking with Earl at Ward 13 and listening to his rabbit story. He can either be found sleeping in bed, or hanging on the walk way above the merchant Whispers. He will not speak to you while he sleeps, and while away, he may be resistant at first to telling you his story."
},
{
"name": "/Items/Materials/Engrams/Item_HiddenContainer_Material_Engram_Medic",
@@ -1481,25 +1492,25 @@
"Mudtooth": [
{
"name": "/Items/Materials/Engrams/Item_HiddenContainer_Material_Engram_Gunslinger",
- "notes": "mudtooth chat full reward"
+ "notes": "Crafted by Wallace at Ward 13. Requires the Worn Cylinder item, purchased from Mudtooth at Ward 13. Available for purchase after exhausting his second set of stories."
},
{
"name": "/Items/Trinkets/Amulets/GunslingersCharm/Amulet_GunslingersCharm",
- "notes": "mudtooth chat full reward"
+ "notes": "Awarded from speaking with Mudtooth at Ward 13, and exhausting his second set of stories, in the campaign mode. The second set of stories is available to the player after completing their second biome in the campaign."
},
{
"name": "/Items/Trinkets/Rings/GunslingersRing/Ring_GunslingersRing",
- "notes": "mudtooth chat half reward"
+ "notes": "Awarded from speaking with Mudtooth at Ward 13, and exhausting his first set of stories, in the campaign mode."
},
{
"name": "/Items/Materials/Engrams/Item_HiddenContainer_Material_Engram_Handler",
- "notes": "buy Old Whistle from Mudtooth"
+ "notes": "Crafted by Wallace at Ward 13. Requires the Old Whistle item, purchased from Mudtooth at Ward 13."
}
],
"Brabus": [
{
"name": "/Items/Materials/Engrams/Item_HiddenContainer_Material_Engram_Hunter",
- "notes": "buy Rusty Medal from Brabus"
+ "notes": "Crafted by Wallace at Ward 13. Requires the Rusty Medal item, purchased from Brabus at Ward 13."
},
{
"name": "/Items/Weapons/Handguns/Standard/HuntingPistol/Weapon_HuntingPistol"
@@ -1547,7 +1558,7 @@
"Reggie": [
{
"name": "/Items/Materials/Engrams/Item_HiddenContainer_Material_Engram_Challenger",
- "notes": "buy Old Metal Tool from Reggie"
+ "notes": "Crafted by Wallace at Ward 13. Requires the Old Metal Tool item, purchased from Reggie at Ward 13."
},
{
"name": "/Items/Trinkets/Rings/01_Graveyard/RingOfTheAdmiral/Ring_RingOfTheAdmiral"
@@ -1563,110 +1574,110 @@
},
{
"name": "/Items/Trinkets/Amulets/ButchersFetish/Amulet_ButchersFetish",
- "notes": "Beat the game"
+ "notes": "Purchased from Reggie at Ward 13 after completing 5 biomes."
},
{
"name": "/Items/Trinkets/Amulets/LetosAmulet/Amulet_LetosAmulet",
- "notes": "flop 100 times"
+ "notes": "Purchased from Reggie at Ward 13 after performing a failed roll 100 times, while wearing the Leto Mark II armor set."
},
{
"name": "/Items/Trinkets/Rings/BlackCatBand/Ring_BlackCatBand",
- "notes": "die 15 times"
+ "notes": "Purchased from Reggie at Ward 13 after dying 15 times."
},
{
"name": "/Items/Trinkets/Rings/BandOfAccord/Ring_BandOfAccord",
- "notes": "do High Five emote in co-op",
+ "notes": "Purchased from Reggie at Ward 13 after performing the High Five emote in co-op.",
"coop": true
},
{
"name": "/Items/Trinkets/Amulets/OnyxPendulum/Amulet_OnyxPendulum",
- "notes": "Complete the campaign on Nightmare difficulty"
+ "notes": "Purchased from Reggie at Ward 13 after completing the campaign on Nightmare difficulty."
},
{
"name": "/Items/Trinkets/Amulets/NightmareSpiral/Amulet_NightmareSpiral",
- "notes": "Defeat all bosses once"
+ "notes": "Purchased from Reggie at Ward 13 after defeating all bosses at least once."
},
{
"name": "/Items/Trinkets/Rings/BrightSteelRing/Ring_BrightSteelRing",
- "notes": "Complete at least 15 biomes"
+ "notes": "Purchased from Reggie at Ward 13 after completing 15 biomes on any difficulty."
}
],
"Cass": [
{
"name": "/Items/Trinkets/Rings/AmberMoonstone/Ring_AmberMoonstone",
- "notes": "cass 75%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/BraidedThorns/Ring_BraidedThorns",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/AkariWarBand/Ring_AkariWarBand",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/CompulsionLoop/Ring_CompulsionLoop",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/RockOfAnguish/Ring_RockOfAnguish",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/DeceiversBand/Ring_DeceiversBand",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/BlessedRing/Ring_BlessedRing",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/RingOfFlawedBeauty/Ring_RingOfFlawedBeauty",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/DeadKingsMemento/Ring_DeadKingsMemento",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/MechanicsCog/Ring_MechanicsCog",
- "notes": "cass 65%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Armor/Base/RelicTesting/EnlargedHeart/Relic_Consumable_EnlargedHeart",
- "notes": "Get to Root Earth"
+ "notes": "Purchased from Cass at Ward 13 after unlocking the Root Earth location in the campaign."
},
{
"name": "/Items/Trinkets/Amulets/BrokenPocketWatch/Amulet_BrokenPocketWatch",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Amulets/AbrasiveWhetstone/Amulet_AbrasiveWhetstone",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Amulets/DecayedMargin/Amulet_DecayedMargin",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Amulets/TwistedIdol/Amulet_TwistedIdol",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/BurdenOfTheGambler/Ring_BurdenOfTheGambler",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/BurdenOfTheAudacious/Ring_BurdenOfTheAudacious",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Trinkets/Rings/BurdenOfTheDestroyer/Ring_BurdenOfTheDestroyer",
- "notes": "cass 35%"
+ "notes": "Purchased from Cass at Ward 13. Merchant has a random chance to have this item in stock."
},
{
"name": "/Items/Armor/Base/RelicTesting/DivertingHeart/Relic_Consumable_DivertingHeart",
- "notes": "Defeat 30 world bosses"
+ "notes": "Purchased from Cass at Ward 13 after defeating 30 world bosses on any difficulty."
}
],
"Whispers": [
@@ -1857,25 +1868,30 @@
"name": "/Items/Traits/Archetype/Amplitude/Trait_Amplitude"
},
{
- "name": "/Items/Traits/Archetype/FlashCaster/Trait_FlashCaster"
+ "name": "/Items/Traits/Archetype/FlashCaster/Trait_FlashCaster",
+ "notes": "Unlocked automatically after leveling up the Archon archetype once."
},
{
"name": "/Items/Traits/Archetype/Fortify/Trait_Fortify"
},
{
- "name": "/Items/Traits/Archetype/Kinship/Trait_Kinship"
+ "name": "/Items/Traits/Archetype/Kinship/Trait_Kinship",
+ "notes": "Unlocked automatically after leveling up the Handler archetype once."
},
{
- "name": "/Items/Traits/Archetype/Longshot/Trait_Longshot"
+ "name": "/Items/Traits/Archetype/Longshot/Trait_Longshot",
+ "notes": "Unlocked automatically after leveling up the Hunter archetype once."
},
{
- "name": "/Items/Traits/Archetype/Potency/Trait_Potency"
+ "name": "/Items/Traits/Archetype/Potency/Trait_Potency",
+ "notes": "Unlocked automatically after leveling up the Alchemist archetype once."
},
{
"name": "/Items/Traits/Archetype/Regrowth/Trait_Regrowth"
},
{
- "name": "/Items/Traits/Archetype/StrongBack/Trait_StrongBack"
+ "name": "/Items/Traits/Archetype/StrongBack/Trait_StrongBack",
+ "notes": "Unlocked automatically after leveling up the Challenger archetype once."
},
{
"name": "/Items/Traits/Archetype/Swiftness/Trait_Swiftness"
@@ -1884,7 +1900,9 @@
"name": "/Items/Traits/Archetype/Triage/Trait_Triage"
},
{
- "name": "/Items/Traits/Archetype/Untouchable/Trait_Untouchable"
+ "name": "/Items/Traits/Archetype/Untouchable/Trait_Untouchable",
+ "notes": "Unlocked automatically after leveling up the Invader archetype once."
+
},
{
"name": "/Items/Traits/Core/Vigor/Trait_Vigor"
@@ -1900,61 +1918,63 @@
},
{
"name": "/Items/Traits/Core/Revivalist/Trait_Revivalist",
+ "notes": "Unlocked automatically after reviving a teammate 15 times.",
"coop": true
},
{
- "name": "/Items/Traits/Core/Scholar/Trait_Scholar"
+ "name": "/Items/Traits/Core/Scholar/Trait_Scholar",
+ "notes": "Unlocked automatically after defeating the Annihilation Boss on any difficulty."
},
{
"name": "/Items/Trinkets/Rings/PanMageSigil/Ring_PanMageSigil",
- "notes": "Complete Yaesha on HC",
+ "notes": "Purchased from Reggie at Ward 13 after defeating a Yaesha World Boss on any difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Trinkets/Rings/DranScavengerSigil/Ring_DranScavengerSigil",
- "notes": "Complete Losomn on HC",
+ "notes": "Purchased from Reggie at Ward 13 after defeating a Losomn World Boss on any difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Trinkets/Rings/DrzyrSniperSigil/Ring_DrzyrSniperSigil",
- "notes": "Complete N'Erud on HC",
+ "notes": "Purchased from Reggie at Ward 13 after defeating a N'Erud World Boss on any difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Trinkets/Rings/02_OnHold/ProvisionerRing/Ring_ProvisionerRing",
- "notes": "Complete Labyrinth on HC",
+ "notes": "Purchased from Reggie at Ward 13 after defeating the Labyrinth Sentinel on any difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Trinkets/Amulets/DaredevilsCharm/Amulet_DaredevilsCharm",
- "notes": "Complete the game on HC",
+ "notes": "Purchased from Reggie at Ward 13 after completing the campaign on any difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Weapons/Longguns/Special/Sporebloom/Weapon_Sporebloom",
- "notes": "Complete the game on Veteran"
+ "notes": "Purchased from Brabus at Ward 13 after completing the campaign on Veteran difficulty."
},
{
"name": "/Items/Weapons/Longguns/Special/Starkiller/Weapon_Starkiller",
- "notes": "Complete the game on HC",
+ "notes": "Purchased from Brabus at Ward 13 after completing the campaign on any difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Weapons/Longguns/Special/Savior/Weapon_Savior",
- "notes": "Complete the game on Veteran HC",
+ "notes": "Purchased from Brabus at Ward 13 after completing the campaign on Veteran difficulty in the Hardcore mode.",
"mode": "Hardcore"
},
{
"name": "/Items/Weapons/Melee/Special/HerosSword/Weapon_HerosSword",
- "notes": "Complete the game"
+ "notes": "Purchased from Brabus at Ward 13 after completing the campaign on Nightmare difficulty."
},
{
"name": "/Items/Weapons/Melee/Special/Smolder/Weapon_Smolder",
- "notes": "Complete the game"
+ "notes": "Purchased from Brabus at Ward 13 after completing the campaign on Veteran difficulty."
},
{
"name": "/Items/Weapons/Melee/Special/WorldsEdge/Weapon_WorldsEdge",
- "notes": "Complete the game on Apocalypse"
+ "notes": "Purchased from Brabus at Ward 13 after completing the campaign on Apocalypse difficulty."
}
]
}
diff --git a/RemnantSaveGuardian/locales/GameStrings.zh-CN.resx b/RemnantSaveGuardian/locales/GameStrings.zh-CN.resx
index 7e10b39..d1ca797 100644
--- a/RemnantSaveGuardian/locales/GameStrings.zh-CN.resx
+++ b/RemnantSaveGuardian/locales/GameStrings.zh-CN.resx
@@ -162,15 +162,24 @@
腐蚀磨石
+
+ {Cass35_Notes}
+
圣十字辉光
破损怀表
+
+ {Cass35_Notes}
+
屠夫灵偶
+
+ 完成游戏
+
增效锁链
@@ -183,12 +192,18 @@
勇者神符
+
+ 在硬核模式下完成游戏
+
死亡之拥
腐朽边际
+
+ {Cass35_Notes}
+
引爆触发器
@@ -201,6 +216,9 @@
人形吊坠
+
+ 在木盒子里面,任务物品打开木盒子互动
+
扩臭器
@@ -228,6 +246,9 @@
枪手神符
+
+ 完成与泥牙全部聊天奖励
+
圣蛋
@@ -246,6 +267,9 @@
小丑的铃铛
+
+ 在小丑表演时鼓掌
+
动能护盾交换器
@@ -261,12 +285,18 @@
莱托的项链
+
+ 超重状态下飞扑100次后在老雷那里购买
+
主母的徽记
领航员吊坠
+
+ 佩戴生锈的领航员吊坠被达拉裟吃掉
+
颈骨项链
@@ -276,18 +306,42 @@
至境项链
+
+ 噩梦螺旋
+
+
+ 打败所有的Boss一次后在老雷那里购买
+
织夜者的仇怨
+
+ 织夜者的网 - 科尔凯特的剃刀
+
尼姆埃缎带
+
+ 把银缎带和金缎带给尼姆埃
+
独眼小丑像
+
+ 小丑卡牌门 - 面具
+
独一真皇魔符
+
+ 把翡凌魔符和翡麟魔符给尼姆埃
+
+
+ 玛瑙钟摆
+
+
+ 在噩梦难度下完成战役后在老雷那里购买
+
远程探头
@@ -309,12 +363,18 @@
刹邸绽放水晶
+
+ 在喜乐宫里小丑坐的骨堆上
+
电击设备
银缎带
+
+ 灵魂之锚
+
魂光项链
@@ -330,9 +390,18 @@
扭曲神像
+
+ {Cass35_Notes}
+
复仇神像
+
+ 虚空神像
+
+
+ 在泽厄尔复制品处用闪耀精华回声制作
+
无重之重
@@ -346,55 +415,76 @@
护甲
- 学者
+ 学者套装
+
+
+ 迷宫套装
- 执政官
+ 执政官套装
身体
+
+ {Armor_Head_Leto2_Notes}
+
- 斗士
+ 斗士套装
- 技师
+ 技师套装
- 探索者
+ 探索者套装
- 翡族皇家
+ 翡族皇家套装
手部
+
+ {Armor_Head_Leto2_Notes}
+
- 正午
+ 正午套装
- 驯兽员
+ 驯兽员套装
头部
+
+ 货船传送门
+
+
+ 在科尔凯特上锁房间头顶的船上
+
+
+ 用近战武器刺客匕首给红王子最后一击
+
- 夜行者
+ 夜行者套装
- 入侵者
+ 入侵者套装
腿部
+
+ {Armor_Head_Leto2_Notes}
+
- 莱托2型
+ 莱托2型套装
磁石王冠
- 战地医务兵
+ 战地医务兵套装
领航员头盔
@@ -406,13 +496,13 @@
红王子的王冠
- 红寡妇
+ 红寡妇套装
- 空间工作者
+ 空间工作者套装
- 长老
+ 长老套装
虚空
@@ -469,7 +559,7 @@
白骨收获者巢穴
- 首领
+ 世界Boss
布拉巴斯
@@ -495,6 +585,15 @@
卡莎
+
+ 卡莎35%几率刷新
+
+
+ 卡莎65%几率刷新
+
+
+ 卡莎75%几率刷新
+
预兆教堂
@@ -513,33 +612,6 @@
钟楼
-
- 在硬核模式下完成迷宫
-
-
- 在硬核模式下完成洛斯曼
-
-
- 在硬核模式下完成涅鲁德
-
-
- 完成游戏
-
-
- 在末日难度下完成游戏
-
-
- 在硬核模式下完成游戏
-
-
- 在老手难度下完成游戏
-
-
- 在硬核老手难度下完成游戏
-
-
- 在硬核模式下完成耶莎
-
腐败港湾
@@ -582,6 +654,9 @@
泽厄尔复制品
+
+ 叨沃
+
电梯井
@@ -702,12 +777,12 @@
猎人
+
+ 我是传奇
+
皇家花园
-
- 我是传奇故事
-
愤怒灵偶
@@ -741,24 +816,39 @@
挑战者
+
+ 从老雷那里购买旧金属工具
+
工程师
枪手
+
+ {Amulet_GunslingersCharm_Notes}
+
驯兽师
+
+ 从泥牙那里购买古老哨子
+
猎人
+
+ 从布拉巴斯那里购买锈蚀奖章
+
入侵者
医务兵
+
+ 从诺拉那里购买医务兵饰针
+
召唤师
@@ -834,9 +924,18 @@
强盗
+
+ 电池
+
子弹织造者
+
+ 致命的平静
+
+
+ 德维士
+
拆解
@@ -846,12 +945,24 @@
失效保护
+
+ 反馈
+
+
+ 鬼魅甲壳
+
+
+ 调谐者
+
轻盈
不幸
+
+ 小丑卡牌门 - 双角恶魔
+
动量
@@ -864,6 +975,15 @@
重振精神
+
+ 怨恨
+
+
+ 破盾者
+
+
+ 屠杀者
+
坚定
@@ -891,8 +1011,11 @@
复仇女神
+
+ 武器之王
+
- 迷你首领
+ 小Boss
改装
@@ -921,6 +1044,9 @@
使魔
+
+ 对熟睡中的女猎人使用捕梦者
+
千里眼
@@ -939,6 +1065,9 @@
喷溢
+
+ 乘坐泽厄尔复制品右边的电梯,然后沿着桥右侧的小路走,你会看到制作材料在机器上
+
棱镜驱动器
@@ -1077,10 +1206,10 @@
劫掠者
-
+
劫掠者的巢穴
-
+
劫掠者的巢穴
@@ -1089,6 +1218,9 @@
盛宴
+
+ 红鹿雕像
+
红王子
@@ -1107,12 +1239,24 @@
腐朽之心
+
+ 转变之心
+
+
+ 打败30个世界Boss后在卡沙那里购买
+
膨大心脏
+
+ 到达根蔓地球后在卡沙那里购买
+
萎靡之心
+
+ 吃死亡之果3次
+
跳动之心
@@ -1128,6 +1272,9 @@
成熟之心
+
+ 塞恩树完全长大,结出神圣塞恩果3次后,再次成熟获得
+
符文之心
@@ -1140,15 +1287,27 @@
汲取之心
+
+ 把闪耀精华回声给保管人
+
折磨之心
+
+ 织夜者的网 - Override Pin (涅鲁德)
+
平稳之心
+
+ 把圣物折磨之心给尼姆埃
+
清白之心
+
+ 在宫殿庭院里同时佩戴独一真皇魔符(项链)、翡凌魔符(戒指)、翡麟魔符(戒指)
+
虚空之心
@@ -1167,6 +1326,9 @@
阿卡里战争指环
+
+ {Cass65_Notes}
+
炼金术之石
@@ -1176,6 +1338,9 @@
琥珀月光石
+
+ {Cass75_Notes}
+
阿纳斯塔西娅的灵感
@@ -1185,15 +1350,27 @@
刺客封印
+
+ 击杀议会成员
+
团队指环
+
+ 协调指环
+
+
+ 联机中与队友完成击掌后在老雷那里购买
+
平分戒指
黑猫指环
+
+ 死亡15次后在老雷那里购买
+
遮光戒指
@@ -1206,6 +1383,9 @@
祝福戒指
+
+ {Cass65_Notes}
+
鲜血珠宝
@@ -1221,12 +1401,27 @@
编织棘刺
+
+ {Cass65_Notes}
+
+
+ 亮钢戒指
+
+
+ 完成至少15个世界故事后在老雷那里购买
+
冒险者之负担
+
+ {Cass35_Notes}
+
破坏者之负担
+
+ {Cass35_Notes}
+
神职者之负担
@@ -1236,6 +1431,9 @@
赌徒之负担
+
+ {Cass35_Notes}
+
水手之负担
@@ -1254,12 +1452,18 @@
编目员珠宝
+
+ 在喜乐宫的巨型下水道入口附近
+
迅捷之石
强制之环
+
+ {Cass65_Notes}
+
保存封印
@@ -1269,9 +1473,15 @@
先王的纪念品
+
+ {Cass65_Notes}
+
欺骗者指环
+
+ {Cass65_Notes}
+
深袋戒指
@@ -1293,12 +1503,18 @@
德兰拾荒者戒指
+
+ 在硬核模式下完成洛斯曼
+
恐惧之泉
泽厄尔狙击手魔符
+
+ 在硬核模式下完成涅鲁德
+
将熄余烬
@@ -1368,6 +1584,9 @@
枪手戒指
+
+ 完成与泥牙一半聊天奖励
+
硬核金属指环
@@ -1401,6 +1620,9 @@
机械师的齿轮
+
+ {Cass65_Notes}
+
金属驱动
@@ -1419,6 +1641,9 @@
阿哈内水晶
+
+ 在硬核模式下完成耶莎
+
对焦戒指
@@ -1434,6 +1659,9 @@
供应者戒指
+
+ 在硬核模式下完成迷宫
+
收割之石
@@ -1458,9 +1686,15 @@
缺陷美戒指
+
+ {Cass65_Notes}
+
优雅戒指
+
+ 把德瑞雅的脚链给瑞文
+
预兆戒指
@@ -1470,6 +1704,9 @@
报应戒指
+
+ 织夜者的网 - 德瑞雅的脚链
+
破损的上将戒指
@@ -1482,12 +1719,18 @@
痛苦之岩
+
+ {Cass65_Notes}
+
锈蚀传家宝
贤者之石
+
+ 蓝宝梦石
+
女皇封印
@@ -1545,6 +1788,9 @@
污秽戒指
+
+ 听睡觉哥讲完兔子的故事
+
库埃拉之泪
@@ -1893,6 +2139,9 @@
回响
+
+ 在涅鲁德沉睡设施中被手动净化程序杀死
+
复活师
@@ -1938,12 +2187,12 @@
静滞
-
- 巨型机械爪
-
地下城
+
+ 巨型机械爪
+
无形者的地下室
@@ -1965,6 +2214,9 @@
刺客匕首
+
+ 把在议会厅镜子世界获得的刺客匕首给尼姆埃
+
黑噬 AR-47
@@ -1986,9 +2238,15 @@
皇家猎弓
+
+ 双管霰弹枪
+
新月
+
+ 对熟睡中的尼姆埃使用捕梦者
+
弩
@@ -2001,6 +2259,9 @@
捕梦者
+
+ 织夜者的网 - 织夜者石像
+
森之缘
@@ -2028,6 +2289,9 @@
英雄长剑
+
+ 完成游戏
+
弹无虚发
@@ -2061,6 +2325,9 @@
巅峰
+
+ 打掉堵塞排水口的怪物,等待90分钟等到大水灌满
+
星云
@@ -2073,6 +2340,9 @@
华丽利刃
+
+ 精巧锤矛
+
等离子切割者
@@ -2094,6 +2364,9 @@
符文手枪
+
+ 织夜者的网 - 贪婪勋章
+
破裂炮
@@ -2103,6 +2376,9 @@
拯救者
+
+ 在硬核老手难度下完成游戏
+
服役手枪
@@ -2115,21 +2391,36 @@
MP60-R
+
+ 货船
+
阴燃
+
+ 完成游戏
+
哀痛
幽灵利刃
+
+ 不插入超载钥匙
+
孢子喷射
+
+ 在老手难度下完成游戏
+
弑星者
+
+ 在硬核模式下完成游戏
+
星辰射击
@@ -2139,9 +2430,15 @@
气巨人
+
+ 被达拉裟吃掉
+
芝加哥打字机
+
+ {Armor_Head_Leto2_Notes}
+
扭曲劲弩
@@ -2151,9 +2448,15 @@
世界之刃
+
+ 在末日难度下完成游戏
+
低语
+
+ 红寡妇王庭
+
风笛塔
@@ -2161,7 +2464,7 @@
凋零
- 世界首领
+ 世界Boss
地球
@@ -2181,64 +2484,4 @@
根蔓地球
-
- 双管霰弹枪
-
-
- 协调指环
-
-
- 迷宫
-
-
- 叨沃
-
-
- 玛瑙钟摆
-
-
- 灵魂之锚
-
-
- 虚空神像
-
-
- 四座雕像
-
-
- 电池
-
-
- 致命的平静
-
-
- 德维士
-
-
- 反馈
-
-
- 调谐者
-
-
- 怨恨
-
-
- 破盾者
-
-
- 屠杀者
-
-
- 武器之王
-
-
- 转变之心
-
-
- 蓝宝梦石
-
-
- 精巧锤矛
-
\ No newline at end of file
diff --git a/RemnantSaveGuardian/locales/Strings.Designer.cs b/RemnantSaveGuardian/locales/Strings.Designer.cs
index df1851f..1d0f731 100644
--- a/RemnantSaveGuardian/locales/Strings.Designer.cs
+++ b/RemnantSaveGuardian/locales/Strings.Designer.cs
@@ -303,6 +303,15 @@ public static string Choose_a_backup_to_restore_from_the_list_ {
}
}
+ ///
+ /// Looks up a localized string similar to Collapse All.
+ ///
+ public static string Collapse_All {
+ get {
+ return ResourceManager.GetString("Collapse All", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Confirm Delete.
///
@@ -411,6 +420,15 @@ public static string Exit_the_game_before_restoring_a_save_backup_ {
}
}
+ ///
+ /// Looks up a localized string similar to Expand All.
+ ///
+ public static string Expand_All {
+ get {
+ return ResourceManager.GetString("Expand All", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Export save files.
///
@@ -555,6 +573,15 @@ public static string Keep {
}
}
+ ///
+ /// Looks up a localized string similar to Language changed to {chosenLanguage}. You may have to restart to app for the change to fully apply..
+ ///
+ public static string Language_change_notice__chosenLanguage_ {
+ get {
+ return ResourceManager.GetString("Language_change_notice_{chosenLanguage}", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Last backup save date.
///
@@ -627,6 +654,15 @@ public static string lblStartPage_ToolTip {
}
}
+ ///
+ /// Looks up a localized string similar to Select language.
+ ///
+ public static string lblSwitchLanguage_Text {
+ get {
+ return ResourceManager.GetString("lblSwitchLanguage_Text", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Light.
///
diff --git a/RemnantSaveGuardian/locales/Strings.resx b/RemnantSaveGuardian/locales/Strings.resx
index 665bf4f..557dcad 100644
--- a/RemnantSaveGuardian/locales/Strings.resx
+++ b/RemnantSaveGuardian/locales/Strings.resx
@@ -432,4 +432,10 @@
Zoom
+
+ Select language
+
+
+ Language changed to {chosenLanguage}. You may have to restart to app for the change to fully apply.
+
\ No newline at end of file
diff --git a/RemnantSaveGuardian/locales/Strings.zh-CN.resx b/RemnantSaveGuardian/locales/Strings.zh-CN.resx
index a98b36e..fb05b04 100644
--- a/RemnantSaveGuardian/locales/Strings.zh-CN.resx
+++ b/RemnantSaveGuardian/locales/Strings.zh-CN.resx
@@ -201,6 +201,9 @@
确认删除
+
+ 全部折叠
+
复制
@@ -234,6 +237,9 @@
请在恢复保存备份前退出游戏。
+
+ 全部展开
+
将存档导出为纯文本