Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Хочу на понятном! или "Перевод со словарем"

Упомянутые в теме пользователи:

Показано с 1 по 3 из 3

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    01.04.2016
    Сообщений
    24
    Поблагодарил(а)
    1
    Получено благодарностей: 36 (сообщений: 7).
    Репутация: 36

    Cool Хочу на понятном! или "Перевод со словарем"

    Надумал сделать аддон русским!
    Целью стал редкий аддон под названием Karma. Текста много, так что придется посидеть подольше.
    Лезу в папку с аддоном и смотрю есть ли локализации на другие языки, чтобы посмотреть пример перевода. Есть! Значит дальше все должно быть просто. Помню что основной файл в аддоне дублирует имя паки аддона с расширением .toc, поэтому лезу в файл karma.toc, в котором присутствует основная информация по аддону. Смотрю ссылки на файлы локализаций отсутствуют, но есть ссылка на файл Karma.xml. Лезу в указанный файл и нахожу ссылки на нужные файлы. По аналогии с ними добавляю свою строчку
    PHP код:
    <Script file="localization.ru.lua"/> 
    и закрываю с сохранением этот файл. Думаю, он мне больше не пригодится. Далее делаю копию файла localization.lua с именем localization.ru.lua и открываю ее. Также открываю файл любой другой локализации (открыл FR) и смотрю чтоже нужно поменять. В итоге заморачиваться особо нестал и поменял начальные строчки, которые так явно отличались от аналогичных:

    PHP код:
    KARMAAVENK_LANG = {};
    KARMAAVENK_LANG_LOC = { PREF "EN"EN = {} };
    local    K KARMAAVENK_LANG_LOC.EN
    на похожие с другой (FR) локализации и заменил FR на RU:

    PHP код:
    if (GetLocale() == "ruRU"then
        KARMAAVENK_LANG_LOC
    .PREF "RU";
        
    KARMAAVENK_LANG_LOC.RU = {};
        
    local    K KARMAAVENK_LANG_LOC.RU
    Но чего то нехватало, и мой текстовый редактор неоднозначно намекал мне что нужно посмотреть концовку файла. Прокрутив до конца вниз, я заметил три интересные буковки и по аналогии добавил их:

    PHP код:
    end 
    Попробывал изменить пару непонятных словечек и зашел в вовку. Сработало! Мои каракули появились где и должны были.
    Все! Основа готова! Теперь остается поменять аглицкие словечки на наши родные. Менять буду осторожно, каждый раз проверяя чтобы не нарваться на что то, что изменять нельзя. Редактор попался хороший, с возможностью отмены после сохранения и подсветкой нужного синтаксиса. Выходить из вовки каждый раз небуду, а просто буду перегружать интерфейс, ибо изменять буду только содержимое файла. Для скорости отключаю все аддоны кроме нужного, и делаю кнопку с макросом /reload для быстрой перезагрузки.

    Бутеры готовы, чайник вскипел, вот и понеслась ...mail1

    Насколько я скумекал своей тыковкой, то весь процесс перевода сводился к простому изменению текста находящегося в кавычках. Что я и поспешил сделать. Но стали встречаться замысловатые строчки где пришлось почесать

    PHP код:
    K.INITIAL_MESSAGE " loaded... Use " .. KARMA_CMDSELF .. " for help!"
    Но тыковка неподвела, ипользуя поиск я быстренько нашел ответ на свой вопрос, который оказался на пару строчек выше:

    PHP код:
    KARMA_CMDSELF "/karma"
    Т.е. в итоге строчка складывалась в сдедующий вид:
    PHP код:
    " loaded... Use /karma for help!" 
    что и демонстрировал аддон при входе в игру.
    В пустой тыковке, в которой семечки ненайти, всетаки появилась одна, с понятием что весь перевод сводится к назначению переменным соответствующих значений. т.е. если взять уже знакомую строчку:
    PHP код:
    K.INITIAL_MESSAGE " loaded... Use " .. KARMA_CMDSELF .. " for help!"
    то
    PHP код:
    K.INITIAL_MESSAGE 
    будет переменной, а
    PHP код:
    " loaded... Use " .. KARMA_CMDSELF .. " for help!" 
    будет присвоенным для нее значением, в то же время это значение содержит другую переменную:
    PHP код:
    KARMA_CMDSELF 
    которую вовка друган при загрузке тоже поменяет на заданное значение.

    Вот я тугоду...

    Процес пошел дальше и быстрее :)

    Так как по аглицки не кумекаю, то вскоре процесс немного затянулся из-за определения смысла и конечной формулировки некоторых моментов.

    В итоге моего шаманства я немного утомился и решил сделать перерыв. Промежуточный результат оказался следующим: localization.ru.zip

    Продолжение следует ...


    Ночь вторая. "Пытка разума"

    За всю жизнь столько поиском не пользовался! Найти в большом тексте нужную фразу, не реально без поиска. Почти вся ночь прошла в однотипном поиске и замене непонятных словечек на понятные. И по пути сделал несколько познаний.

    Если хотим показать непечатаемый символ, например кавычки, то перед ним просто ставим обратный слэш
    PHP код:
    \
    Для перехода на новую строчку используется
    PHP код:
    \
    Также встретилось использование различных цветов текста, например:

    PHP код:
    |cFFFF0000ОТКЛЮЧЕНО|
    что окрасило унылый однотонный текст "ОТКЛЮЧЕНО" в нужный цвет в HEX кодировке который я легко нашел в поисковике, в данном случает цвет FF0000 - красный

    Потом встретилось три момента на которые я обратил внимание:
    PHP код:
    1.
    KARMA_CMDLINE_HELP_ALTS 
    = {
        
    "первая строчка",
        
    "вторая строчка",
        
    "третья строчка",
        
    "четвертая строчка",
        };
    2.
    KARMA_WINEL_DBCLEAN_TESTTOOLTIP 
    "первая строчка\nвторая строчка\nтретья строчка\nчетвертая строчка\n";

    3.
    KARMA_WINEL_SENDMESS_TOOLTIP 
    =       "первая строчка\n"
                    
    .. "вторая строчка\n"
                    
    .. "третья строчка\n"
                    
    .. "четвертая строчка"
    Показалась что тремя способами делается одно и то же..
    Останавливаться не стал, т.к. тыковка и так пустая и напрягаться в ней нечему. Решил ковырнуть вопрос о значке на Tian Panel который нехотел балакать по нашему, в отличие от значка у миникарты, который запел сразу. И я полез туда, незнаю куда. Почесав вершину своих мыслей, я скумекал что если написано на значке Karma: Broker, то и решение вопроса где то в папке KarmaBroker. Единственный интересный файл оказался KarmaBroker.lua который я и ковырнул. А искал я то что отображалось в подсказке, а именно надпись:

    Click left to open Karma's main window

    и нашел ее в следующей строчке:

    PHP код:
    GameTooltip:AddLine("Click left to open Karma's main window"); 
    Неожиданно в моей пустой тыковке нарисовалось аж ДВЕ!!! мыслишки. Первая была простая: тупо заменить текст и не парится. Вторая была из разряда русской рулетки, и я решил схитрить, ну может прокнет!?!? И вернулся в файл localization.ru.lua, нашел уже обученную строчку для значка у миникарты:

    PHP код:
    KARMA_WINEL_MINIMENU_TOOLTIP1 "Левая кнопка открывает главное окно"
    взял эту переменную и внаглую засунул вместо текста в строчке брокера:

    PHP код:
    GameTooltip:AddLine(KARMA_WINEL_MINIMENU_TOOLTIP1); 
    Жахнул в бубны и жмакнул, затыканную до нельзя, кнопку беспощадного макроса.. и о чудо! Значек заговорил!

    И на этой, несомненно, победной для меня ноте я решил не продолжать тыкать носом мою терпеливую подругу "клаву" и отложил все на следующую ночь..

    Результаты моего напряга Karma_ru.zip


    Ночь третья. "Нежданчик"

    Радость побед подстегивала меня быстрее все завершить, и вопрос как поступить с брокером, менять тупо текст или вставлять переменные а перевод делать в файле локализации, очень быстро решился в пользу второго. Я подумал "Не перевода ради, а энтузиазма для!!!" и вскоре пожалел, но об этом чуть ниже.
    Я продолжал менять текст на переменные, а если не было переменных с нужным значением то я их просто создавал новые.
    Потом в дело полез мой энтузиазм.



    И я подумал, может изменить написание уровня "[lvl 80]" на банальное "80" и поставить его перед именем игрока, а слово "Karma" не переводить а просто удалить.
    Поначалу я решил укоротить громоздкий заголовок на самый короткий, и найдя эту строчку, изменил ее:
    PHP код:
    GameTooltip:AddLine("[Karma: Broker] by Kärbär@EU-Proudmoore"110);

    на

    GameTooltip
    :AddLine(KARMA_ITSELF110); 
    Далее я стал искать где же упоминается "lvl" и нашел
    PHP код:
    sLineL format("|cFF%.2X%.2X%.2X%s|r [lvl %d]:"dClassR 255dClassG 255dClassB 255sNameUnitLevel(sUnit)); 
    Своей кумекалкой прикинул что %d это и есть уровень, и удалил около него скобки и надпись уровня. Жмакаю макрос, и все нормально, все как и задумалось. теперь надо поставить это обозначение уровня, перед именем персонажа, и я его перенес. Но не прокнуло, что-то я недокумекал... Тыковка напряглась... И пришла подруга "мысль"! Формат состоит как бы из двух частей:
    PHP код:
    маски
    "|cFF%.2X%.2X%.2X%s|r [lvl %d]:"
    и переменных
    dClassR 
    255dClassG 255dClassB 255sNameUnitLevel(sUnit
    подставляемых в нее. И я покумекал, т.к. я переместил место отображения уровня с последнего на первое, то и переменную UnitLevel(sUnit) надо переместить в начало. И родилась строчка:
    PHP код:
    sLineL format("%d |cFF%.2X%.2X%.2X%s|r:"UnitLevel(sUnit), dClassR 255dClassG 255dClassB 255sName); 
    Жмакнул макрос, и вуаля, все прокнуло. По пути я решил добить перевод остальных строчек
    PHP код:
    -- Таланты --
    sLineL sLineL .. "\n=> talents: " .. sTalents;
    на
    sLineL 
    sLineL .. "\n=> " .. KARMA_MSG_TIP_TALENT .. ": " .. sTalents;
    -- 
    Навык --
    sLineL sLineL .. "\n=> skill: *" .. sSkill .. "*";
    на
    sLineL 
    sLineL .. "\n=> " .. KARMA_MSG_TIP_SKILL .. ": *" .. sSkill .. "*";
    -- 
    Публичные заметки --
    sLineL sLineL .. "\n=> public notes: \"" .. sPublic .. "\"";
    на
    sLineL 
    sLineL .. "\n=> " .. KARMA_WINEL_NOTESPUBLIC .. ": \"" .. sPublic .. "\"";
    -- 
    Личные заметки --
    sLineR "--> private notes:\n" .. sPrivate;
    на
    sLineR 
    KARMA_WINEL_NOTESSCROLLFRAMETITLE .. "\n" .. sPrivate;
    -- 
    Рейд --
    GameTooltip:AddLine("Raid: " .. iCnt .. " members");
    на
    GameTooltip
    :AddLine(KARMA_WINEL_MINIMENU_KARMARAID .. iCnt .. KARMA_WINEL_MINIMENU_MEMBERS);
    -- 
    Группа --
    GameTooltip:AddLine("Group: " .. iCnt .. " members");
    на
    GameTooltip
    :AddLine(KARMA_WINEL_MINIMENU_KARMAGROUP .. iCnt .. KARMA_WINEL_MINIMENU_MEMBERS); 
    Тык заветный макрос, и результат не заставил себя долго ждать



    Обрадованный мыслью что, "Я ВСЕ МОГУ", хотел было идти спать. Но в глаза кинулись моменты, которые я никак не хотел принимать, несколько раз жмакнул макрос, и все оставалось на месте. Я вернул оригинальные файлы и жмакнул опять. Облом, все подтвердилось... диагноз... В общем, беда была где то в оригиналах, и я приуныл...



    В личных заметках вылезала какая то трабла, и вылезала она напротив тех игроков у кого указано два спека. Осознавая что для решения данного вопроса моей тыковки ну никак не хватит, я упал вообще в осадок...
    "Белая полоса закончилась и нежданно, в общем как и всегда, пришла черная" подумал я, и пошел спать...

    Результаты karma ru_2.zip
    Последний раз редактировалось gth; 04.05.2016 в 19:52.

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 13.10.2015, 01:25
  2. "Голова Ониксии" в Личном кабинeтe
    от furfurik в разделе WoW Circle 3.3.5a x100
    Ответов: 2
    Последнее сообщение: 14.07.2015, 18:14
  3. Ответов: 1
    Последнее сообщение: 27.02.2013, 17:22
  4. Ответов: 1
    Последнее сообщение: 03.08.2012, 10:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •