public override bool Invoke(ChatData chatData) { StringBuilder msg = new StringBuilder(); msg.AppendLine($"Client Culture {MyAPIGateway.Session.Config.Language}"); MyTexts.LanguageDescription clientLanguage = MyTexts.Languages[MyAPIGateway.Session.Config.Language]; msg.AppendLine($"Client Culture {clientLanguage.CultureName}-{clientLanguage.SubcultureName}"); msg.AppendLine($@"Client Localized string: ""{Localize.GetResource(Localize.WorldSaved, MyAPIGateway.Session.Name)}"""); msg.AppendLine($@"Client Localized string: ""{Localize.GetResource("DisplayName_Item_GoldIngot")}"""); msg.AppendLine($@"Client Substitute string: ""{MyTexts.SubstituteTexts("{LOC:DisplayName_Item_GoldIngot}")}"""); msg.AppendLine($@"Client Substitute strings: ""{Localize.SubstituteTexts("{LOC:DisplayName_Item_GoldIngot}{LOC:DisplayName_Item_SilverIngot}")}"""); msg.AppendLine($@"Client Substitute strings: ""{Localize.SubstituteTexts("Some {LOC:DisplayName_Item_GoldIngot} and {LOC:DisplayName_Item_SilverIngot}.")}"""); int count1 = 10; int count2 = 20; int count3 = 30; int count4 = 40; msg.AppendResourceLine(@"Client Substitute strings: ""{0}x {LOC:DisplayName_Item_PlatinumIngot}. {1}x {LOC:DisplayName_Item_GoldIngot}. {2}x {LOC:DisplayName_Item_SilverIngot}. {3}x {LOC:DisplayName_Item_IronIngot}.""", count1, count2, count3, count4); msg.AppendResourceLine(@"Client Substitute strings: ""{LOC:NotificationHintTurnPowerOff}""", "XXX"); MyAPIGateway.Utilities.SendMissionScreen(chatData.SenderSteamId, "/Test01", null, " ", msg.ToString(), null, "OK"); return(true); }
public override bool Invoke(ChatData chatData) { StringBuilder msg = new StringBuilder(); MyTexts.LanguageDescription languageRu = MyTexts.Languages[MyLanguagesEnum.Russian]; MyTexts.Clear(); MyTexts.LoadTexts(Path.Combine(MyAPIGateway.Utilities.GamePaths.ContentPath, "Data", "Localization"), languageRu.CultureName, languageRu.SubcultureName); msg.AppendLine($"Server Culture: {languageRu.Name}: {languageRu.CultureName}-{languageRu.SubcultureName}"); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource(Localize.WorldSaved, MyAPIGateway.Session.Name)}"""); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource("DisplayName_Item_GoldIngot")}"""); msg.AppendLine(); MyTexts.LanguageDescription languageEn = MyTexts.Languages[MyLanguagesEnum.German]; MyTexts.Clear(); MyTexts.LoadTexts(Path.Combine(MyAPIGateway.Utilities.GamePaths.ContentPath, "Data", "Localization"), languageEn.CultureName, languageRu.SubcultureName); msg.AppendLine($"Server Culture: {languageEn.Name}: {languageEn.CultureName}-{languageEn.SubcultureName}"); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource(Localize.WorldSaved, MyAPIGateway.Session.Name)}"""); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource("DisplayName_Item_GoldIngot")}"""); msg.AppendLine(); MyTexts.LanguageDescription languageOriginal = MyTexts.Languages[MyAPIGateway.Session.Config.Language]; MyTexts.Clear(); MyTexts.LoadTexts(Path.Combine(MyAPIGateway.Utilities.GamePaths.ContentPath, "Data", "Localization"), languageOriginal.CultureName, languageOriginal.SubcultureName); msg.AppendLine($"Server Culture: {languageOriginal.Name}: {languageOriginal.CultureName}-{languageOriginal.SubcultureName}"); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource(Localize.WorldSaved, MyAPIGateway.Session.Name)}"""); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource("DisplayName_Item_GoldIngot")}"""); msg.AppendLine(); MyAPIGateway.Utilities.SendMissionScreen(chatData.SenderSteamId, "/Test03", null, " ", msg.ToString(), null, "OK"); return(true); }
// Reflection copy of MyTexts.AddLanguage private static void AddLanguage(MyLanguagesEnum id, string cultureName, string subcultureName = null, string displayName = null, float guiTextScale = 1f, bool isCommunityLocalized = true) { // Create an empty instance of LanguageDescription. MyTexts.LanguageDescription languageDescription = ReflectionUtil.ConstructPrivateClass <MyTexts.LanguageDescription>( new Type[] { typeof(MyLanguagesEnum), typeof(string), typeof(string), typeof(string), typeof(float), typeof(bool) }, new object[] { id, displayName, cultureName, subcultureName, guiTextScale, isCommunityLocalized }); Dictionary <MyLanguagesEnum, MyTexts.LanguageDescription> m_languageIdToLanguage = typeof(MyTexts).GetStaticField <Dictionary <MyLanguagesEnum, MyTexts.LanguageDescription> >("m_languageIdToLanguage"); Dictionary <string, MyLanguagesEnum> m_cultureToLanguageId = typeof(MyTexts).GetStaticField <Dictionary <string, MyLanguagesEnum> >("m_cultureToLanguageId"); if (!m_languageIdToLanguage.ContainsKey(id)) { m_languageIdToLanguage.Add(id, languageDescription); m_cultureToLanguageId.Add(languageDescription.FullCultureName, id); } }
// Reflection copy of MyTexts.AddLanguage private static void AddLanguage(MyLanguagesEnum id, string cultureName, string subcultureName = null, string displayName = null, float guiTextScale = 1f, bool isCommunityLocalized = true) { // Create an empty instance of LanguageDescription. ConstructorInfo constructorInfo = typeof(MyTexts.LanguageDescription).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(MyLanguagesEnum), typeof(string), typeof(string), typeof(string), typeof(float), typeof(bool) }, null); MyTexts.LanguageDescription languageDescription = (MyTexts.LanguageDescription)constructorInfo.Invoke(new object[] { id, displayName, cultureName, subcultureName, guiTextScale, isCommunityLocalized }); Dictionary <MyLanguagesEnum, MyTexts.LanguageDescription> m_languageIdToLanguage = typeof(MyTexts).GetStaticField <Dictionary <MyLanguagesEnum, MyTexts.LanguageDescription> >("m_languageIdToLanguage"); Dictionary <string, MyLanguagesEnum> m_cultureToLanguageId = typeof(MyTexts).GetStaticField <Dictionary <string, MyLanguagesEnum> >("m_cultureToLanguageId"); if (!m_languageIdToLanguage.ContainsKey(id)) { m_languageIdToLanguage.Add(id, languageDescription); m_cultureToLanguageId.Add(languageDescription.FullCultureName, id); } }
public override bool Invoke(ChatData chatData) { StringBuilder msg = new StringBuilder(); msg.AppendLine($"Server Culture {MyAPIGateway.Session.Config.Language}"); MyTexts.LanguageDescription serverLanguage = MyTexts.Languages[MyAPIGateway.Session.Config.Language]; msg.AppendLine($"Server Culture {serverLanguage.CultureName}-{serverLanguage.SubcultureName}"); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource(Localize.WorldSaved, MyAPIGateway.Session.Name)}"""); msg.AppendLine($@"Server Localized string: ""{Localize.GetResource("DisplayName_Item_GoldIngot")}"""); MyTexts.LanguageDescription clientLanguage = MyTexts.Languages[chatData.Language]; msg.AppendLine(); msg.AppendLine($"Client Culture {chatData.Language}"); msg.AppendLine($"Client Culture {clientLanguage.CultureName}-{clientLanguage.SubcultureName}"); msg.AppendLine(); msg.AppendLine($@"Client Localized string cannot be done, as the other resources cannot loaded without switching the entire server/client."); MyAPIGateway.Utilities.SendMissionScreen(chatData.SenderSteamId, " /Test02", null, " ", msg.ToString(), null, "OK"); return(true); }