public void Update(string fileName, string key, string text) { foreach (KeyValuePair <string, List <LocalizationItem> > entry in localizationDictionary) { // search list if (entry.Key.Equals(fileName) == false) { continue; } // correct list found List <LocalizationItem> list = entry.Value; try { LocalizationItem localizationItem = list.Single(s => s.key == key); localizationItem.value = text; } catch (Exception) { // if there is no entry, we will get an exception LocalizationItem localizationItem = new LocalizationItem(); localizationItem.key = key; localizationItem.value = text; list.Add(localizationItem); } IsDirty = true; // done return; } }
public static LocalizationItem GetLocalizationItemFromIpAddress(string ipAddress) { string _ipAddress = ipAddress; LocalizationItem ipdata = null; try { if (Utils.IsLocalhost()) { ipAddress = "199.60.221.180"; } if (!String.IsNullOrWhiteSpace(ipAddress)) { WebClient client = new WebClient(); string response = client.DownloadString("http://ip-api.com/json/" + ipAddress); if (response != null) { ipdata = JsonConvert.DeserializeObject <LocalizationItem>(response); if (ipdata != null && ipdata.status != "fail") { ipdata.numLon = Convert.ToDouble(ipdata.lon); ipdata.numLat = Convert.ToDouble(ipdata.lat); ipdata.userHostAddress = _ipAddress; return(ipdata); } } } } catch (Exception e) { Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "ipAddress = " + ipAddress); } return(new LocalizationItem(49.2788, -123.1139, "Vancouver", _ipAddress));; }
public void RemoveKey(string key) { // remove from the localization list foreach (KeyValuePair <string, List <LocalizationItem> > entry in localizationDictionary) { // correct list found List <LocalizationItem> list = entry.Value; try { LocalizationItem localizationItem = list.Single(s => s.key == key); list.Remove(localizationItem); } catch (Exception) { // not in the list } } // remove from the global list try { ListViewEntry listViewEntry = collection.Single(s => s.Key == key); collection.Remove(listViewEntry); } catch (Exception) { // not in the list } IsDirty = true; }
public void SelectLocalizedString(LocalizationItem s) { System.Windows.Controls.TextBox t = DynamicNode.GetCurrentEditTextBox(); if (t != null) { t.Text = s.Key; } }
public void AddLocalizationItem(string key, string value) { LocalizationItem tempItem = new LocalizationItem(); tempItem.key = key; tempItem.value = value; localizationData.items.Add(tempItem); }
private void Body() { GUILayout.BeginHorizontal(); var items = _localizationObjects[_lastSelectedLocalizationFile].LocalizationItems; GUILayout.Label("key", GUILayout.Width(100)); foreach (var lang in Enum.GetNames(typeof(Languages))) { GUILayout.Label(lang, GUILayout.Width(100)); } GUILayout.EndHorizontal(); _scrollPosition = GUILayout.BeginScrollView(_scrollPosition, GUILayout.ExpandHeight(true)); GUILayout.BeginVertical(); LocalizationItem itemToRemove = null; foreach (LocalizationItem item in items) { GUILayout.BeginHorizontal(); DrawLocalizationItem(item); if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) { itemToRemove = item; } GUILayout.EndHorizontal(); } if (itemToRemove != null) { items.Remove(itemToRemove); } GUILayout.EndVertical(); EditorGUILayout.EndScrollView(); GUILayout.BeginHorizontal(); _newItem = DrawLocalizationItem(_newItem); if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) { if (string.IsNullOrEmpty(_newItem.Key)) { _newItem.Key = items.Count.ToString(); } items.Add(_newItem); _newItem = new LocalizationItem(); } GUILayout.EndHorizontal(); }
private LocalizationItem DrawLocalizationItem(LocalizationItem localizationItem) { localizationItem.Key = GUILayout.TextField(localizationItem.Key, GUILayout.Width(100)); foreach (var lang in (Languages[])Enum.GetValues(typeof(Languages))) { if (!localizationItem.Values.ContainsKey(lang)) { localizationItem.Values.Add(lang, string.Empty); } localizationItem.Values[lang] = GUILayout.TextField(localizationItem.Values[lang], GUILayout.Width(100)); } return(localizationItem); }
void GetText(string filePath, string key, Action <string> action) { LocalizedTexts localizedTexts = null; StartCoroutine(DownloadFile.Download(filePath, (string jsonString) => { localizedTexts = JsonUtility.FromJson <LocalizedTexts>(jsonString); LocalizationItem item = localizedTexts.items.Find(o => o.key == key); string result = ""; if (item != null) { result = item.value; } action.Invoke(result); })); }
public static double GetDistance(LocalizationItem from, LocalizationItem to) { try { var sCoord = new GeoCoordinate(from.numLat, from.numLon); var eCoord = new GeoCoordinate(to.numLat, to.numLon); return(sCoord.GetDistanceTo(eCoord)); } catch (Exception e) { Commons.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); } return(-1); }
public static void Open(LocalizationItem item) { LocalizationDeleteItemWindow window = CreateInstance <LocalizationDeleteItemWindow>(); //window.ShowUtility(); window.item = item; bool option = EditorUtility.DisplayDialog("Delete Localization Item", "Delete the localization item with key '" + item.key + "'?", "Yes, delete.", "No, cancel"); if (option) { GetWindow <LocalizationEditor>().DeleteLocalizationItem(item); } }
public bool RenameKey(string oldKey, string newKey) { // remove from the global list try { ListViewEntry listViewEntry = collection.Single(s => s.Key == newKey); // if no exception, then we already have the new key return(false); } catch (Exception) { // remove from the localization list foreach (KeyValuePair <string, List <LocalizationItem> > entry in localizationDictionary) { // correct list found List <LocalizationItem> list = entry.Value; try { LocalizationItem localizationItem = list.Single(s => s.key == oldKey); localizationItem.key = newKey; } catch (Exception) { // not in the list } } // remove from the global list try { ListViewEntry listViewEntry = collection.Single(s => s.Key == oldKey); listViewEntry.Key = newKey; listViewEntry.FirePropertyChanged("Key"); } catch (Exception) { // not in the list } } IsDirty = true; return(true); }
public string OpenTranslation(string selectedPath) { // reset the lists Clear(); // find all JSONs string[] filePaths = Directory.GetFiles(selectedPath, "*.json"); if (filePaths.Length == 0) { return(null); } currentFolder = selectedPath; for (int i = 0; i < filePaths.Length; i++) { string filePath = filePaths[i]; string fileName = Path.GetFileName(filePath); // load the JSON string dataAsJson = File.ReadAllText(filePath); LocalizationData loadedData = JsonConvert.DeserializeObject <LocalizationData>(dataAsJson); // create a new list entry List <LocalizationItem> list = new List <LocalizationItem>(); localizationDictionary.Add(fileName, list); for (int j = 0; j < loadedData.items.Length; j++) { LocalizationItem localizationItem = loadedData.items[j]; // add the key to the list if (collection.Any(p => p.Key == localizationItem.key) == false) { collection.Add(new ListViewEntry(localizationItem.key)); } list.Add(localizationItem); } } return(selectedPath); }
public ActionResult Index() { BrowseIndexViewModel model = new BrowseIndexViewModel(); try { ViewBag.Title = "[[[Browse]]]"; ProductFilter filter = new ProductFilter(); LocalizationItem loc = DefaultUserLocalization; model.LocalizationJson = JsonConvert.SerializeObject(loc); model.ProductsListJson = JsonConvert.SerializeObject(_productService.GetProducts(filter)); model.Language = WebsiteLanguage; } catch (Exception e) { Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, null); } return(View(model)); }
static void ReadFile(string filename, string className) { try { XmlSerializer x = new XmlSerializer(typeof(XmlObject)); TextReader reader = new StreamReader(filename); string fl = reader.ReadToEnd(); fl = fl.Replace(className, "XmlObject"); StringReader strReader = new StringReader(fl); XmlObject itm = (XmlObject)x.Deserialize(strReader); foreach (var obj in itm.repetative) { LocalizationItem litm = new LocalizationItem(obj.name, obj.description); localizItems.m_itemList.Add(litm); } } catch (Exception e) { var cons = Console.Out; cons.WriteLine("Some error found:" + e.Message + " in the file:" + filename); } }
private bool ApplyAppFilter(LocalizationItem item, IList <string> appsFilter) { foreach (var appFilter in appsFilter) { if (appFilter == null) { if (item.Apps.Count < 1) { return(true); } } else { if (item.Apps.Contains(appFilter)) { return(true); } } } return(false); }
/// <summary> /// Loads language file from harddrive. /// </summary> /// <param name="languageCode">international language code("en_US", "de_DE", "tr_TR")</param> public static void LoadLanguage(string languageCode) { localizedTexts = new Dictionary <string, string>(); string fileDirectory = Path.Combine(Application.streamingAssetsPath, "Localization"); string fileName = languageCode + ".json"; string filePath = Path.Combine(fileDirectory, fileName); if (File.Exists(filePath)) { string jsonData = File.ReadAllText(filePath); LocalizationData data = JsonUtility.FromJson <LocalizationData>(jsonData); for (int i = 0; i < data.items.Length; i++) { LocalizationItem item = data.items[i]; localizedTexts.Add(item.key, item.text); } } else { Debug.LogError("Cannot load file: " + filePath); } }
/// <summary> /// Adds instance and property for localizing /// </summary> /// <param name="instance">Instance to object</param> /// <param name="propertyName">Name of property</param> /// <param name="resourceKey">Resource key</param> /// <param name="format">Custom string format</param> /// <param name="resourceManager">Resource manager</param> public static void Add(object instance, string propertyName, string resourceKey, string format, ResourceManager resourceManager) { // check if (instance == null) { throw new ArgumentNullException("instance"); } if (String.IsNullOrEmpty(propertyName)) { throw new ArgumentNullException("propertyName"); } resourceKey = resourceKey ?? String.Empty; if (String.IsNullOrEmpty(resourceKey.Trim())) { throw new ArgumentNullException("resourceKey"); } if (resourceManager == null) { throw new ArgumentNullException("resourceManager"); } PropertyDescriptor descriptor = TypeDescriptor.GetProperties(instance)[propertyName]; if (descriptor == null) { throw new ArgumentException("property does not belongs to instance", "propertyName"); } // trace if (_tracingEnabled) { Trace.WriteLine(String.Format("Added item [Instance:\"{0}\" Property:\"{1}\" ResourceKey:\"{2}\" Format:\"{3}\"]", instance.ToString(), propertyName, resourceKey, format ?? String.Empty, resourceManager)); } // create localization item LocalizationItem item = new LocalizationItem(); item.Instance = instance; item.Manager = resourceManager; item.Property = descriptor; item.ResourceKey = resourceKey; item.Format = format; lock (_sync) { // check whether exists IEnumerable<LocalizationItem> existing = GetItems(instance, propertyName); if (existing.Count() > 0) { if (_exceptionOnDuplicate) { throw new LocalizerException("This instance and property is already defined."); } Remove(instance, propertyName); } // add item _items.Add(item); } // localize item SetValue(item); }
private static string ShowWindow() { MWindow window = new(); window.SizeToContent = SizeToContent.WidthAndHeight; window.WindowStartupLocation = WindowStartupLocation.CenterScreen; window.Title = "Rainbow Fonts"; window.MinimizeBox = false; Grid grid = new(); window.Content = grid; grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); Label tip = new(); tip.Foreground = new SolidColorBrush(Colors.White); tip.Content = "Text:"; grid.Children.Add(tip); Grid.SetColumn(tip, 0); TextBox box = new(); box.Width = 160; box.VerticalContentAlignment = VerticalAlignment.Center; box.Background = new SolidColorBrush(Color.FromArgb(20, 255, 255, 255)); box.Foreground = new SolidColorBrush(Colors.White); grid.Children.Add(box); Grid.SetColumn(box, 1); Button btn = new(); btn.Foreground = new SolidColorBrush(Colors.White); btn.Padding = new Thickness(2); var loc = new LocalizationItem("UI.Confirm"); BindingOperations.SetBinding(btn, ContentControl.ContentProperty, new Binding("Value") { Mode = BindingMode.OneWay, Source = loc }); grid.Children.Add(btn); Grid.SetColumn(btn, 2); btn.Click += (s, e) => { window.Close(); }; window.ShowDialog(); return(box.Text); }
private bool ApplyLanguageFilter(LocalizationItem item, Language language) { return(item.Values.ContainsKey(language)); }
private bool ApplyIOSPlatformFilter(LocalizationItem item) { return(item.Keys.ContainsKey(Platforms.IOS)); }
/// <summary> /// JSONのツリーを探索して、一つの言語分のデータをLangageData型のインスタンスとして作成します。 /// </summary> /// <param name="obj"></param> /// <param name="list"></param> private static void Traverse(JObject obj, ref LanguageData list) { foreach (var item in obj) { var value = item.Value; // itemがツリー構造の枝/葉のどちらか判定 var isLeaf = value.Type != JTokenType.Object; if (isLeaf) { var ns = TrimEnd(value.Path, "." + item.Key); var str = value.Type != JTokenType.Array ? value.ToString() : value.ToString(Formatting.None); var data = new LocalizationItem(ns, item.Key, str); list.Add(data); } else { Traverse((JObject)value, ref list); } } }
private void OnGUI() { GUILayout.Space(sideMargins); GUILayout.BeginHorizontal(GUILayout.Height(30)); GUILayout.Space(sideMargins); if (GUILayout.Button("Create new localization data")) { CreateNewData(); } if (GUILayout.Button("Open data file")) { LoadGameData(); } GUILayout.Space(sideMargins); GUILayout.EndHorizontal(); if (!hasFile) { return; } // GUILayout.Space(50); EditorGUILayout.LabelField("Data input", EditorStyles.boldLabel); //Text limits and its input GUILayout.Label("Limit character count"); GUILayout.BeginHorizontal(GUILayout.Height(20)); GUILayout.Space(sideMargins); isTextLimited = EditorGUILayout.BeginToggleGroup("Limit character count", isTextLimited); limitMessageBox = EditorGUILayout.Toggle("MessageBox text (" + CoreUIManager.MessageBoxMaxCharacter + ")", limitMessageBox); limitSkillDescription = EditorGUILayout.Toggle("Skill Description text (" + CoreUIManager.SkillDescriptionMaxCharacter + ")", limitSkillDescription); EditorGUILayout.EndToggleGroup(); GUILayout.Space(sideMargins); GUILayout.EndHorizontal(); if (limitSkillDescription && limitMessageBox) { limitMessageBox = false; limitSkillDescription = false; } if (limitMessageBox) { maxTextCount = CoreUIManager.MessageBoxMaxCharacter; } if (limitSkillDescription) { maxTextCount = CoreUIManager.SkillDescriptionMaxCharacter; } if (LocalizationData != null) { EditorGUI.HelpBox(new Rect(20, 35, 350, 40), "Now editing: " + filename, MessageType.Info); if (isEditing) { EditorGUILayout.LabelField("Editing key: " + key, EditorStyles.boldLabel); } else { key = EditorGUILayout.TextField("Key: ", key); } GUILayout.Label("English"); english = EditorGUILayout.TextArea(english, GUILayout.Height(40)); GUILayout.Label("Japanese"); japanese = EditorGUILayout.TextArea(japanese, GUILayout.Height(40)); if (isTextLimited) { if (english.Length > maxTextCount) { english = english.Substring(0, maxTextCount); } if (japanese.Length > maxTextCount) { japanese = japanese.Substring(0, maxTextCount); } } string labelName = isEditing ? "Edit" : "Add"; // if (GUILayout.Button(labelName, GUILayout.Height(30))) { if (isEditing) { foreach (var item in LocalizationData.Items) { if (item.Key == keyToEdit) { item.ValueJapanese = japanese; item.ValueEnglish = english; } } isEditing = false; return; } bool exists = false; foreach (var item in LocalizationData.Items) { if (item.Key == key) { exists = true; } } if (!exists) { LocalizationItem newItem = new LocalizationItem(); newItem.Key = key; newItem.ValueJapanese = japanese; newItem.ValueEnglish = english; LocalizationData.Items.Add(newItem); //reset values. key = ""; japanese = ""; english = ""; } else { EditorUtility.DisplayDialog("Duplicate", "Key already exists. Please edit it in the hierarchy when needed.", "Ok"); } } EditorGUILayout.LabelField("Data view", EditorStyles.boldLabel); scrollPosition = GUILayout.BeginScrollView(scrollPosition); SerializedObject serializedObject = new SerializedObject(this); SerializedProperty serializedProperty = serializedObject.FindProperty("LocalizationData"); EditorGUILayout.PropertyField(serializedProperty, true); serializedObject.ApplyModifiedProperties(); GUILayout.EndScrollView(); } GUILayout.BeginHorizontal(GUILayout.Height(20)); GUILayout.Space(sideMargins); if (GUILayout.Button("Save Current")) { SaveGameDataToSameFileName(); } if (GUILayout.Button("Save as new")) { SaveGameData(); } GUILayout.Space(sideMargins); GUILayout.EndHorizontal(); //Edit GUILayout.BeginHorizontal(GUILayout.Height(30)); GUILayout.Space(sideMargins); if (GUILayout.Button("Edit entry")) { LocalizedEditWindow window = (LocalizedEditWindow)EditorWindow.GetWindow(typeof(LocalizedEditWindow), true, "Localization Keys"); List <string> keys = new List <string>(); foreach (var item in LocalizationData.Items) { keys.Add(item.Key); } window.AddKeys(keys); window.OnEdit = new UnityEngine.Events.UnityEvent(); window.OnEdit.AddListener(() => { keyToEdit = window.KeyToEdit; EditorUtility.DisplayDialog("Confirm", "Now editing: " + keyToEdit, "Ok"); isEditing = true; foreach (var item in LocalizationData.Items) { if (item.Key == keyToEdit) { key = item.Key; english = item.ValueEnglish; japanese = item.ValueJapanese; } } window.Close(); Repaint(); }); } if (isEditing && GUILayout.Button("Stop editing")) { isEditing = false; Repaint(); } GUILayout.Space(sideMargins); GUILayout.EndHorizontal(); }
private bool ApplyAndroidPlatformFilter(LocalizationItem item) { return(item.Keys.ContainsKey(Platforms.Android)); }
private void OnGUI() { if (localizationData != null) { EditorGUI.HelpBox(new Rect(5, 5, 400, 40), "Now editing: " + filename, MessageType.Info); //EditorGUI.HelpBox(filename, EditorStyles.boldLabel, EditorStyles.helpBox); GUILayout.Space(55); key = EditorGUILayout.TextField("Key: ", key); value = EditorGUILayout.TextField("Value: ", value); if (GUILayout.Button("Add", GUILayout.Height(30))) { bool exists = false; foreach (var item in localizationData.items) { if (item.key == key) { exists = true; } } if (!exists) { LocalizationItem newItem = new LocalizationItem(); newItem.key = key; newItem.value = value; List <LocalizationItem> temp = new List <LocalizationItem>(); foreach (var item in localizationData.items) { temp.Add(item); } temp.Add(newItem); localizationData.items = temp.ToArray(); } else { EditorUtility.DisplayDialog("Key already exists. Please edit it in the hierarchy", "OK?", "Ok", "Ok?"); } } EditorGUILayout.LabelField("Raw data view", EditorStyles.boldLabel); scrollPosition = GUILayout.BeginScrollView(scrollPosition); SerializedObject serializedObject = new SerializedObject(this); SerializedProperty serializedProperty = serializedObject.FindProperty("localizationData"); EditorGUILayout.PropertyField(serializedProperty, true); serializedObject.ApplyModifiedProperties(); GUILayout.EndScrollView(); if (GUILayout.Button("Save localization data", GUILayout.Height(30))) { SaveGameData(); } GUILayout.Space(20); } if (GUILayout.Button("Load localization data")) { LoadGameData(); } if (GUILayout.Button("Create new localization data")) { CreateNewData(); } GUILayout.Space(10); }
public void DeleteLocalizationItem(LocalizationItem item) { localizationData.items.Remove(item); }
/// <summary> /// Applies localization to item by specified culture /// </summary> /// <param name="item">Localization item</param> /// <param name="cultureInfo">Culture info</param> private static void SetValue(LocalizationItem item, CultureInfo cultureInfo) { // check if (item == null) { throw new ArgumentNullException("item"); } object value = null; CultureInfo culture = cultureInfo != null ? cultureInfo : CurrentCulture; try { TypeConverter converter = TypeDescriptor.GetConverter(item.Property.PropertyType); // resource is string if (converter.CanConvertFrom(typeof(string))) { string formatedValue = item.Manager.GetString(item.ResourceKey, culture); if (!String.IsNullOrEmpty(item.Format)) { formatedValue = String.Format(culture, item.Format, formatedValue); } if (item.Property.PropertyType != typeof(string)) { value = converter.ConvertFromString(formatedValue); } else { value = formatedValue; } } else { // resource is stream if (item.Property.PropertyType == typeof(Stream)) { value = item.Manager.GetStream(item.ResourceKey, culture); } else { value = item.Manager.GetObject(item.ResourceKey, culture); } } lock (_sync) { if (_items.Contains(item)) { item.Property.SetValue(item.Instance, value); } } } catch (Exception e) { throw new LocalizerException(e.Message, e); } }
/// <summary> /// Applies localization to item /// </summary> /// <param name="item">Localization item</param> private static void SetValue(LocalizationItem item) { SetValue(item, null); }