Локализация

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Локализация

Сообщение trh 19 апр 2021, 00:42

Здравствуйте!
Нашел урок на тему локализации. Заработало только на компе, в андроид не хочет.
Перевод берется из файла 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
Аватара пользователя
trh
UNец
 
Сообщения: 48
Зарегистрирован: 21 ноя 2020, 13:31

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

Сообщение Saltant 19 апр 2021, 01:54

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)
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

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

Сообщение trh 19 апр 2021, 06:26

В общем, я пока искал ответ наткнулся на ассет в магазе за 5$. Вот точно то, что было нужно, не больше, не меньше. Я сдался и купил. Протестил, все как надо работает. Посмотрел код и понял, что такую шикарную штуку я сам не смог бы сделать, пока что. Так, что нужда отпала, но понимания как надо делать все еще нету. Всем удачи, друзья %%-
Аватара пользователя
trh
UNец
 
Сообщения: 48
Зарегистрирован: 21 ноя 2020, 13:31

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

Сообщение 1max1 19 апр 2021, 11:16

Какой ассет хоть?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

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

Сообщение trh 19 апр 2021, 21:39

1max1 писал(а):Какой ассет хоть?

А вот этот:
https://assetstore.unity.com/packages/tools/localization/localization-for-all-platforms-179267#content
Моя лучшая покупка в жизни :)
Аватара пользователя
trh
UNец
 
Сообщения: 48
Зарегистрирован: 21 ноя 2020, 13:31


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28