Нашел урок на тему локализации. Заработало только на компе, в андроид не хочет.
Перевод берется из файла json, который лежит в StreamingAssets. Не могу с андроид получить к нему доступ. Я видел способ, когда люди получают доступ через www, пытался сделать и я, но не получилось. К тому же редактор пишет, что метод устарел. Друзья, может кто в курсе как надо изменить путь, что бы заработало на андроид.
Ну или может подскажите как поменять на xml вместо json. Наверное получиться тогда запихать в ресурсы и получить через TextAsset.
Тут я прикреплю код менеджера локализации, а ниже ссылку на урок, может кому посмотреть надо будет.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class LocalizationManager : MonoBehaviour
{
private Dictionary<string, string> localizedText;
private bool isReady = false;
private string missingTextString = "Localized text not found";
public void LoadLocalizedText(string fileName)
{
localizedText = new Dictionary<string, string>();
string filePath = Path.Combine(Application.streamingAssetsPath, fileName);
if (File.Exists(filePath))
{
string dataAsJson = File.ReadAllText(filePath);
LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson);
for (int i = 0; i < loadedData.items.Length; i++)
{
localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
}
Debug.Log("Data loaded, dictionary contains: " + localizedText.Count + " entries");
}
else
{
Debug.LogError("Cannot find file!");
}
isReady = true;
}
public string GetLocalizedValue(string key)
{
string result = missingTextString;
if (localizedText.ContainsKey(key))
{
result = localizedText[key];
}
return result;
}
public bool GetIsReady()
{
return isReady;
}
}
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class LocalizationManager : MonoBehaviour
{
private Dictionary<string, string> localizedText;
private bool isReady = false;
private string missingTextString = "Localized text not found";
public void LoadLocalizedText(string fileName)
{
localizedText = new Dictionary<string, string>();
string filePath = Path.Combine(Application.streamingAssetsPath, fileName);
if (File.Exists(filePath))
{
string dataAsJson = File.ReadAllText(filePath);
LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson);
for (int i = 0; i < loadedData.items.Length; i++)
{
localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
}
Debug.Log("Data loaded, dictionary contains: " + localizedText.Count + " entries");
}
else
{
Debug.LogError("Cannot find file!");
}
isReady = true;
}
public string GetLocalizedValue(string key)
{
string result = missingTextString;
if (localizedText.ContainsKey(key))
{
result = localizedText[key];
}
return result;
}
public bool GetIsReady()
{
return isReady;
}
}
https://learn.unity.com/tutorial/recorded-video-session-localization-tools#5c7f8528edbc2a002053b66f