Master of Star Control
Старый 10.12.2011, 22:04   #1
Vasaka
Аватар для Vasaka
Горит! Программирование: C#: Загрузка разных локализайий.

Программирование: C#: Загрузка разных локализайий.

от Snake_B


В процессе разработки прототипа вроде начинают прорисовываться элементы, которые можно разработать отдельно, при чем в обычной Visual Studio, а не в Unity, а потом уже добавить в игру....


Что требуется? Требуется загрузка разных XML файлов в зависимости от установленного языка локализации.

Нужна обработка нескольких языков.... хранить данные думаю стоит в XML

Данные языков должны быть в отдельных файлах, т.е. в одном файле не может быть русского и английского текста... при этом данные языка не обязательно будут в одном файле (скорее обязательно будут в нескольких)...

Собственно что нужно реализовать....
1. поиск файлов в папке (для каждого языка своя папка)
2. считывание данных из всех файлов (нужного нам типа) в папке в массив (string)
3. Массив двухмерный.... первое поле название элемента (заголовок главного меню), второе поле текст
Или реализовать выборку нужного элемента массива по другому
4. По умолчанию массив должен заполняться в программе (если не будет файлов ресурсов), сохранение массива в файл (для последующего редактирования).... Если в файле не хватает каких то строк, то недостающие строки заполняются в программе (т.е. если у вас файл с русским на половину обрезан (от старой версии например), то в игре будет половина на английском, половина на русском)...
5. Поиск в программе индекса массива в котором расположено название элемента "заголовок главного меню", для того чтобы потом считать данные из массива
Или при изменении пункта 3, изменить и здесь.

Код должен быть совместим с .NET 2.0.

Достаточно довольно простой реализации.... есть две три строки, сохраняем в файл, считываем из файла, заполняем массив из файла, присваиваем переменной нужное значение из массива..


если кто знающий попадется пусть подправят... главное получить в конце строковую переменную с текстом...
ну и чтобы файлы по структуре были такие... т.е. не было файлов с несколькими языками и не было как 4-й циве, одно поле пропустил весь интерфейс без текста остался... остальное на усмотрения того кто будет разрабатывать...
Вверх
Старый 10.12.2011, 23:53   #2
Scampada
Аватар для Scampada
По умолчанию

Банально файл с загнанными в него строками?
Вверх
Старый 11.12.2011, 01:55   #3
Vasaka
Аватар для Vasaka
По умолчанию

Ну, насколько я вижу, сначала программа должна узнать какие папки существуют.
Потом осуществить выбор нужной, из которой и будут считываться нужные тексты игры, например русского языка.
Дальше не вникал. Сейчас очень много другой работы по проекту.

Там же Витя всё по пунктам расписал.
Если что-то конкретное не понятно, напиши, я ему перекину, а потом размещу ответ.
Вверх
Старый 11.12.2011, 02:07   #4
Snake_B
Аватар для Snake_B
По умолчанию

> Ну, насколько я вижу, сначала программа должна узнать какие папки существуют

распишу по моим другим программам... есть папка language... в ней лежат папки "English" , "Russian".... нужно в папке language найти все папки которые есть (это кстати нужно и при создании списка языков для выбора)...

> Потом осуществить выбор нужной
игре надо передать список языков доступных, она вернет выбранный язык.... из той папки название какой она вернет, считать данные... плюс нужен отдельный файл (для каждого языка свой) в котором будет писаться название этого языка на этом самом языке...
ну чтобы был список:
1. English
2. Русский

Вверх
Старый 12.12.2011, 20:54   #5
Scampada
Аватар для Scampada
По умолчанию


Цитата:
Сообщение от Snake_B

плюс нужен отдельный файл (для каждого языка свой) в котором будет писаться название этого языка на этом самом языке...

Зачем? В файле с названиями пунктов меню (самом маленьком по размеру) первым элементом можно поставить название языка. При считывании языков программа будет читать первые несколько байт этого файла, это и будет название языка. Нафиг куча файлов с одним только названием?)
Вверх
Старый 12.12.2011, 22:51   #6
Vasaka
Аватар для Vasaka
По умолчанию


Цитата:
Сообщение от Scampada

Зачем? В файле с названиями пунктов меню (самом маленьком по размеру) первым элементом можно поставить название языка. При считывании языков программа будет читать первые несколько байт этого файла, это и будет название языка. Нафиг куча файлов с одним только названием?)

Если языковых файлов для одного языка будет больше чем один, а их будет больше. Тогда придётся в каждом файле писать эту строку.
Поэтому лучше один файл. А ещё лучше начинающийся с подчёркивания, чтобы он в этой папке всегда был первым.

Всё это написано в Тех Задании.
Что называется: "Берите, делайте". Потом Главный программист подскажет что подправить, исправить.
Вверх
Старый 13.12.2011, 03:59   #7
Snake_B
Аватар для Snake_B
По умолчанию


Цитата:
Сообщение от Scampada

Зачем? В файле с названиями пунктов меню (самом маленьком по размеру) первым элементом можно поставить название языка. При считывании языков программа будет читать первые несколько байт этого файла, это и будет название языка. Нафиг куча файлов с одним только названием?)

да... в принципе отдельный файл не обязателен... можно так:
Languages\English\English.xml
в нём первым пунктом название... остальное содержимое по желанию.... может мы все данные языка в него запихаем... а может в нем кроме названия больше ни чего не будет....

примерно так я делаю в своих программах... основной файл с данными языка для текущей программы и несколько дополнительных файлов общих для всех программ... в результате в некоторых программах больше половины текста переводить не надо... они уже были переведены до этого...

в принципе я думаю такая возможность не будет лишней и в МОСК, сильно она его не усложнит, а мало ли потом где она нам может пригодиться...

Вверх
Старый 23.12.2011, 15:19   #8
krupennikov
Аватар для krupennikov
По умолчанию

Вот вам на рассмотрение проект на .NET 2.0 сделанный мной в студии 2010. Класс XmlDictionary можно сделать отдельной библиотекой. Методы класса XmlDictionary:

XmlToDictionary(string path) - читает все файлы xml из папки path и возвращает как массив типа Dictionary<string ключ, string значение>, то есть массив со значениями ключей, для каждого ключа свое значение.

DictionaryToXml(Dictionary<string, string> dictionary, string pathWithName) - сохраняет массив типа Dictionary<string ключ, string значение> в файл pathWithName и возвращает значение true при удачном сохранении, иначе значение false.

GetSourceDictionary() - возвращает пример массива типа Dictionary<string ключ, string значение>.

GetLanguages(string directoryPath) - возвращает тип List<string> как список папок расположенных в папке directoryPath.

GetValueFromKey(Dictionary<string, string> dictionary, string key) - возвращает значение ключа key массива dictionary. Если значение не найдено, возвращает ключ в виде текста.
Вложения
Тип файла: rar LanguageSelect.rar (77.6 Кб, 5 просмотров)
Вверх
Старый 23.12.2011, 16:39   #9
Vasaka
Аватар для Vasaka
По умолчанию


Цитата:
Сообщение от krupennikov

Вот вам на рассмотрение проект на .NET 2.0 сделанный мной в студии 2010. Класс XmlDictionary можно сделать отдельной библиотекой. Методы класса XmlDictionary:

XmlToDictionary(string path) - читает все файлы xml из папки path и возвращает как массив типа Dictionary<string ключ, string значение>, то есть массив со значениями ключей, для каждого ключа свое значение.

DictionaryToXml(Dictionary<string, string> dictionary, string pathWithName) - сохраняет массив типа Dictionary<string ключ, string значение> в файл pathWithName и возвращает значение true при удачном сохранении, иначе значение false.

GetSourceDictionary() - возвращает пример массива типа Dictionary<string ключ, string значение>.

GetLanguages(string directoryPath) - возвращает тип List<string> как список папок расположенных в папке directoryPath.

GetValueFromKey(Dictionary<string, string> dictionary, string key) - возвращает значение ключа key массива dictionary. Если значение не найдено, возвращает ключ в виде текста.

Отлично.
Витя скоро должен объявиться. В районе нового года обещал.
Вверх
Старый 23.12.2011, 19:15   #10
krupennikov
Аватар для krupennikov
По умолчанию

Для тех, кто хочет просто запустить программу и поэкспериментировать с xml файлами, выкладываю exe файл. Для добавления нового языка достаточно создать новую папку в папке Languages с содержанием нужного/ных xml файла/ов подобных имеющимся. Можно даже просто переименовать папку "Russian" на "Русский". Программа отреагирует при запуске
Вложения
Тип файла: rar SourceLanguageSelect.rar (7.5 Кб, 6 просмотров)
Вверх
 

Метки
программирование:, загрузка, локализайий., разных

Опции темы
Опции просмотра

Ваши права в разделе
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
Быстрый переход

 
Наш любимый хостер - Majordomo.ru!
Текущее время: 16:39. Часовой пояс GMT +4.

 

Powered by vBulletin® Version 3.8.7 Перевод:zCarot
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Время генерации страницы 0.17108 секунды с 14 запросами