crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Алгоритм адаптации Qt документации...
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
nick shaforostoff Дата 12.1.2008, 17:56
 
Цитата
было: variable - descriprion
стало: variable is descriprion
в следствии чего не переведенный фрагмент. :(

это решаетмся тулчейном gettext + kaider ( http://techbase.kde.org/index.php?title=Pr...Projects/KAider )
см. man msgmerge, особенно опцию --previous
nick shaforostoff Дата 12.1.2008, 17:53
  зачем велосипеды?

ваша задача - распарсить html-страницы с чёткой структурой в формат gettext po, а затем передать работу средствам используемым для переводов программ и документации, в т.ч. KDE

пример распарсенного XML docbook:
http://websvn.kde.org/*checkout*/trunk/l10..._using-kmail.po
http://websvn.kde.org/*checkout*/trunk/KDE...g-kmail.docbook
Litkevich Yuriy Дата 11.1.2008, 13:10
  Я как не програмер, имею в голове такую схему:
Есть английская версия EN-1,
Есть её русский перевод RU-1,
Есть свежая английская версия EN-2,
Делаем из EN-1 и RU-1 получаем Diff-1,
Делаем из EN-1 и EN-2 получаем Diff-2,

Diff-x делается стандартными средствами UNIX'ов или подобными.

теперь как-то :rolleyes: патчим RU-1 с помощью Diff-2 чтобы получить RU-2, бестолково конечно, но, вдруг, кто нибудь из програмеров найдет в этом изюминку.
ViGOur Дата 5.1.2008, 1:39
 
Цитата(Tonal @ 4.1.2008, 23:54) *
Что, если в новой версии поменялось описание функции, или, например её аргументы?
Тогда, при пакетной конвертации оно неглядя замениться старым вариантом, что не есть хорошо.
Это ерунда, так как по английскому и русскому оригиналам делается некий словарик, который загоняется в QMap, ключем является английское предложение, значением русское, если ключ и значение одинаковы, то это или название функции или не переведенный фрагмент, следовательно не учитывается. После чего читается новый документ, который нужно перевести, и при парсинге идет сверка с полученным ранее "словариком", и в случае совпадения ключей замена их английского значения на русское.

Но в данном подходе тоже есть но, так как кажется в описании класса QString было некое изменение, что-то вроде:
было: variable - descriprion
стало: variable is descriprion
в следствии чего не переведенный фрагмент. :(

Подумываю правильным ли будет в этом случае разбивать на слова и если будет например 90% сходство английского варинта (ключей), то менять его на русский.

Честно говоря не подумал о XML парсинге попробую, спасибо... :)
Tonal Дата 4.1.2008, 23:54
  Не надо регекспы. Там все файлы в формате xhtml - нормально парсяться любым xml парсером.
Все описания функции/свойства находяться на одном уровне.
Всегда начинаются с тага <h3 class="fn">
его первый ребёнок - пустой якорь, например <a name="checkable-prop"></a>
Дальше идём по братьям до следующего подобного <h3 class="fn">, или до пустого <p />, за которым сразу <address>.

Вот код на python для выдёргивания:
from BeautifulSoup import BeautifulStoneSoup, Tag

def get_soup(f_name):
  content = file(f_name).read().replace(
    '<?xml version="1.0" encoding="iso-8859-1"?>',
    '<?xml version="1.0" encoding="windows-1251"?>', 1)
  return BeautifulStoneSoup(content)
            
def get_all_func(soup):
  def is_func(tag):
    return (
      isinstance(tag, Tag) and tag.name == 'h3' and
      dict(tag.attrs).get('class') == 'fn')

  def is_stop(tag):
    if not (isinstance(tag, Tag) and tag.name == 'p'):
      return False
    child = tag.contents[0]
    return isinstance(child, Tag) and child.name == 'address'

  funcs = []
  for tag in soup.findAll('h3', **{'class': 'fn'}):
    tags = [tag]
    funcs.append((tag.a['name'], tags))
    tag = tag.nextSibling
    while tag and not (is_func(tag) or is_stop(tag)):
      tags.append(tag)
      tag = tag.nextSibling
  return funcs

def test()
  funcs = get_all_func(get_soup(r'4.1.0\qabstractbutton.html'))
  for func in funcs:
    print '@', func[0]
    for dscr in func[1]:
      print dscr

test()

Собственно, осталось нарисовать алгоритм слияния - он тоже довольно прост...

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

Напрашивается полуавтоматный конвертор, который бы давал возможность просматривать описания перев их заменой и даже править по ходу.

Мне кажется, вполне можне нарисовать на основе приведённого алгоритма
ViGOur Дата 2.1.2008, 21:41
  Тема еще пока актуальна!

На даный момент бодаюсь с обработкой регулярными выражениями, и при сдвиге в форматитировании немного в сторону результат получается не тот, что ожидался, может быть это и из-за того, что я плохо знаю регулярные выражения. :)
ViGOur Дата 22.12.2007, 18:32
 
Цитата(Tonal @ 22.12.2007, 18:28) *
Надо просто свою писать, и сразу на русском. :-)
Возможно, но прежде чем писать свою неплохо было бы перевести и хорошо написанную, правда на английском. :)

Хотя у меня есть идея написать документацию в примерах по Qt, подробно описывающию применение всех функций каждого из классов.
Но это пока идея, и пока не знаю, хорошая или нет. :)
Tonal Дата 22.12.2007, 18:28
 
Цитата(Admin @ 21.12.2007, 12:05) *
[OFFTOP]
Цитата(Tonal @ 21.12.2007, 8:24) *
Документы разбираются например BeautifulSoup
Еще документация для перевода, сколько же ее... :)

Надо просто свою писать, и сразу на русском. :-)
Admin Дата 21.12.2007, 9:05
  [OFFTOP]
Цитата(Tonal @ 21.12.2007, 8:24) *
Документы разбираются например BeautifulSoup
Еще документация для перевода, сколько же ее... :)
ViGOur Дата 21.12.2007, 8:53
  От akorchagin перевод Qt 4.1.0.

Но вся проблема в том, что как я посмотрел, например в том же QString в Qt 4.3.2 по сравнению с 4.1.0 описание явно отличается, явно изменилось описание, вместо последовательного разбито на части, некоторые строки вообще убраны, ну и конечно же добавлено много функций.

Поэтому я думаю, что обычными маркерами не отделаться...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 15:57