PoEToR - Русификатор навыков, камней, меню и т.п.

Тема в разделе "Обсуждение игры", создана пользователем Tetos, 25 авг 2014.

Статус темы:
Закрыта.
  1. Tetos

    Tetos Exile Переводчик

    Сообщения:
    52
    Симпатии:
    25
    PoEToR обновлен до версии 1.2.1b:
    - Адаптация под новый патч 1.2.1b.
    - Исправлены неточности в описании пассивных навыков.
    - Удален перевод интерфейса по интеграции VisualGGPK, перевод добавлен в PoEString(PoES)в файл translation.xml.
    - Исправлено сохранение настроек игры, логина, интерфейса (В связи с чем регионы оставлены на английском языке).
    - Перевод совместим с PoELore.
     
    Diablo нравится это.
  2. stan88

    stan88 Exile

    Сообщения:
    2.064
    Симпатии:
    1.620
    в твоих влажных мечтах
     
  3. LoreLover

    LoreLover Команда форума Переводчик

    Сообщения:
    3.112
    Симпатии:
    1.781
    @Tetos @Кантор чтоб не множить переводы больше двух (с переводом механики и без него) - ловите.

    Скрипт для объединения файлов перевода.
    [​IMG]
    Код скрипта:
    Код:
    import codecs,sys
    import json
    import xml.dom.minidom as minidom
    from xml.dom.minidom import getDOMImplementation
    
    impl = getDOMImplementation()
    
    doc = impl.createDocument(None, "ArrayOfDatTranslation", None)
    top_element = doc.documentElement
    
    print 'source 1 -',sys.argv[1],'/ source 2 -',sys.argv[2],'/ result -',sys.argv[3]
    
    f = open(sys.argv[1])
    x = f.read()
    f.close()
    
    source1 = minidom.parseString(x)
    
    s1 = {}
    
    f = open(sys.argv[2])
    x = f.read()
    f.close()
    
    source2 = minidom.parseString(x)
    
    s2 = {}
    
    s1count = 0
    DatTranslations = source1.getElementsByTagName("DatTranslation")
    for DatTranslation in DatTranslations:
        Translations = DatTranslation.getElementsByTagName("Translation")
        DatName = DatTranslation.getElementsByTagName("DatName")[0].childNodes[0].data
        s1[DatName] = {}
        # print DatName
        for Translation in Translations:
            OriginalText = Translation.getElementsByTagName("OriginalText")[0].childNodes[0].data
            TranslatedText = Translation.getElementsByTagName("TranslatedText")[0].childNodes[0].data
            s1[DatName][OriginalText] = TranslatedText
            s1count += 1
           
    s2count = 0
    DatTranslations = source2.getElementsByTagName("DatTranslation")
    for DatTranslation in DatTranslations:
        Translations = DatTranslation.getElementsByTagName("Translation")
        DatName = DatTranslation.getElementsByTagName("DatName")[0].childNodes[0].data
        s2[DatName] = {}
        # print DatName
        for Translation in Translations:
            OriginalText = Translation.getElementsByTagName("OriginalText")[0].childNodes[0].data
            TranslatedText = Translation.getElementsByTagName("TranslatedText")[0].childNodes[0].data
            s2[DatName][OriginalText] = TranslatedText
            s2count += 1
    
    
    d = {}
    for DatName in s1:
        d[DatName] = {}
        for Translation in s1[DatName]:
            d[DatName][Translation] = s1[DatName][Translation]
           
    added = 0
    replaced = 0
    total = 0
    
    conflicts = []
    
    for DatName in s2:
        if not d.has_key(DatName):
            d[DatName] = {}
        for Translation in s2[DatName]:
            if d[DatName].has_key(Translation):
                replaced += 1
                conflicts.append(dict(dat=DatName,key=Translation,original=s1[DatName][Translation],replaced_by=s2[DatName][Translation]))
            else:
                added += 1
            d[DatName][Translation] = s2[DatName][Translation]
           
           
           
    for DatName in d:
        DatTranslation = doc.createElement('DatTranslation')
    
        DatNameNode = doc.createElement('DatName')
        DatNameText = doc.createTextNode(DatName)
    
        DatNameNode.appendChild(DatNameText)
        DatTranslation.appendChild(DatNameNode)
       
        Translations = doc.createElement('Translations')
        # print DatName
        for Translation in d[DatName]:
            TranslationNode = doc.createElement('Translation')
            OriginalNode = doc.createElement('OriginalText')
            OriginalText = doc.createTextNode(Translation)
            OriginalNode.appendChild(OriginalText)
            TranslatedNode = doc.createElement('TranslatedText')
            TranslatedText = doc.createTextNode(d[DatName][Translation])
            TranslatedNode.appendChild(TranslatedText)
            TranslationNode.appendChild(OriginalNode)
            TranslationNode.appendChild(TranslatedNode)
            Translations.appendChild(TranslationNode)
            total += 1
       
        DatTranslation.appendChild(Translations)
        top_element.appendChild(DatTranslation)
    
    with codecs.open(sys.argv[3], "w", "utf-8") as out:
        out.write(doc.toprettyxml())
       
    with codecs.open('conflicts.txt', "w", "utf-8") as out:
        out.write(json.dumps(conflicts, sort_keys=True, indent=4,ensure_ascii=False))
    
    print sys.argv[1],s1count,'records total'   
    print sys.argv[2],s2count,'records total'   
    print sys.argv[2],'merged into',sys.argv[1],'result writed to',sys.argv[3]
    print sys.argv[3],'now contain',total,'records'
    print added,'records added /',replaced,'records replaced'
    print 'Done.'
    
    Файл отчёта о конфликтах (между поелор и поетор):
    Код:
    [
        {
            "dat": "NPCTalk.dat",
            "key": "Create a Hideout",
            "original": "Создать Убежище",
            "replaced_by": "Создать Убежище"
        },
        {
            "dat": "NPCTalk.dat",
            "key": "Purchase Decorations",
            "original": "Приобрести Украшения",
            "replaced_by": "Преобрести декорации"
        },
        {
            "dat": "NPCTalk.dat",
            "key": "Daily Mission",
            "original": "Задание Дня",
            "replaced_by": "Задание"
        }
    ]

    Как запускать:
    Просто запустить merge.cmd
    Но перед этим, в случае необходимости подправить его содержание:
    Код:
    C:\Python\python.exe merge.py poetor.xml poelore.xml translation.xml
    
    где
    C:\Python\python.exe - путь к исполнителю скрипта. Нужен Питон 2, не третий.
    merge.py - сам скрипт, менять не надо
    poetor.xml - первый источник, любое имя
    poelore.xml - второй источник, любое имя
    translation.xml - файл в который будет записан результат слияния, 
    тоже можно вообще-то как угодно назвать.
     

    Вложения:

    • merge.zip
      Размер файла:
      351,2 КБ
      Просмотров:
      10
  4. Кантор

    Кантор Транслейтфюрер Переводчик

    Сообщения:
    581
    Симпатии:
    198
    не знаю как ты а я просто кидаю содержание нужного раздела из xml в xml после чего открываю стринги и нажимаю сохранить, прога сама отсеивает все ненужное
     
  5. LoreLover

    LoreLover Команда форума Переводчик

    Сообщения:
    3.112
    Симпатии:
    1.781
    И ничего об этом не докладывает, и вообще ничего не видно где что заменилось и как и сколько.
    Впрочем, твоё дело.
     
  6. lobzison

    lobzison Пятая колонна poezone

    Сообщения:
    3.991
    Симпатии:
    2.423
    Попробуй вчитаться в аватар и подумать. Иногда помогает.
     
  7. Кантор

    Кантор Транслейтфюрер Переводчик

    Сообщения:
    581
    Симпатии:
    198
    смотря куда закинуть, программа берет последнюю запись.
     
  8. Pakman

    Pakman Exile

    Сообщения:
    1
    Симпатии:
    0
    не устанавливает руссификатор пишет вот:
    Building directory tree... Failed to read WorldAreas.dat: Missing magic number after records Translations read: 314
    делал всё как показано в видео. Что делать
     
  9. Кантор

    Кантор Транслейтфюрер Переводчик

    Сообщения:
    581
    Симпатии:
    198
    так и должно быть, это-не ошибка, скорее недостающая часть=)
    создатель программы еще не расшифровал все .dat файлы
    просто нажимайте Apply All все.
     
  10. PacoOfficial

    PacoOfficial Exile

    Сообщения:
    1
    Симпатии:
    1
    Автору большое спасибо за перевод.
    А так же всем тем, кто будет заниматься этим и дальше.

    А вы, вечно не довольные, можете не вставлять свои 5 копеек, лучше бы помогли чем нибудь, чем пытаться гнобить тех, кто пытается сделать хоть что то полезное для ру комьюнити PoE.
     
    Diablo нравится это.
  11. Guardsman

    Guardsman Анархическое крыло poezone

    Сообщения:
    2.000
    Симпатии:
    798
    Очень ждем ваши вопросы по игре в соответствующих темах.
    Очень.
     
    Dissolator, HarukaTeno, narical и ещё 1-му нравится это.
  12. Diablo

    Diablo Exile

    Сообщения:
    854
    Симпатии:
    386
    Тебя кто-то заставляет их читать? Отвечать на них?
     
  13. Guardsman

    Guardsman Анархическое крыло poezone

    Сообщения:
    2.000
    Симпатии:
    798
    тебе важно узнать мое мнение?)
     
  14. CAESAR

    CAESAR Imperious archmage

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

    Tetos Exile Переводчик

    Сообщения:
    52
    Симпатии:
    25
    PoEToR обновлен до версии 1.2.2b:
    - Адаптация под новый патч 1.2.2b.
    - Перевод совместим с PoELore.
     
  16. imerror93

    imerror93 Exile

    Сообщения:
    5
    Симпатии:
    0
    Failed to read ShopItem.dat: Missing magic number after records
    Failed to read WorldAreas.dat: Missing magic number after records
    Translations read: 0
    Не хочет...(
     
  17. Tetos

    Tetos Exile Переводчик

    Сообщения:
    52
    Симпатии:
    25
    так и должно быть (т.к. программу разработчик не обновил под 1.2.2)

    А вот этого быть не должно.
    Сейчас еще раз все перепроверю.

    Посмотрите пожалуйста, если у вас в папке PoES файл translation.xml и сколько он весит.[DOUBLEPOST=1410514600,1410514040][/DOUBLEPOST]Проверил ошибок в сборке нет.
    Должно быть так:
    Translations read: 314

    PS: перекачайте, пожалуйста PoEToR еще раз.
    Есть подозрение что у вас потерялся файл translation.xml
     
  18. imerror93

    imerror93 Exile

    Сообщения:
    5
    Симпатии:
    0
    translation.xml - 107 kb
    и все равно... Translations read: 0
    Значит, что то я делаю не так!
    Хотя версия 1.2.1 нормально работала...(
     
  19. Guardsman

    Guardsman Анархическое крыло poezone

    Сообщения:
    2.000
    Симпатии:
    798
    таки не могу не спросить
    а игру обновляли прежде чем свежий русик ставить?
     
  20. imerror93

    imerror93 Exile

    Сообщения:
    5
    Симпатии:
    0
    уже 10-ый раз через файлик PackCheck.exe
    Сносить клиент и заново качать так в падлу...
    Похоже остается только это
     
Статус темы:
Закрыта.