Страница 1 из 1

Локализация

СообщениеДобавлено: 19 апр 2021, 00:42
trh
Здравствуйте!
Нашел урок на тему локализации. Заработало только на компе, в андроид не хочет.
Перевод берется из файла 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;
    }

}
 

https://learn.unity.com/tutorial/recorded-video-session-localization-tools#5c7f8528edbc2a002053b66f

Re: Локализация

СообщениеДобавлено: 19 апр 2021, 01:54
Saltant
To read streaming Assets on platforms like Android and WebGL, where you cannot access streaming Asset files directly

Используй ресурсы, забирай оттуда и распаковывай в Application.persistentDataPath (https://docs.unity3d.com/ScriptReferenc ... aPath.html)

Re: Локализация

СообщениеДобавлено: 19 апр 2021, 06:26
trh
В общем, я пока искал ответ наткнулся на ассет в магазе за 5$. Вот точно то, что было нужно, не больше, не меньше. Я сдался и купил. Протестил, все как надо работает. Посмотрел код и понял, что такую шикарную штуку я сам не смог бы сделать, пока что. Так, что нужда отпала, но понимания как надо делать все еще нету. Всем удачи, друзья %%-

Re: Локализация

СообщениеДобавлено: 19 апр 2021, 11:16
1max1
Какой ассет хоть?

Re: Локализация

СообщениеДобавлено: 19 апр 2021, 21:39
trh
1max1 писал(а):Какой ассет хоть?

А вот этот:
https://assetstore.unity.com/packages/tools/localization/localization-for-all-platforms-179267#content
Моя лучшая покупка в жизни :)