Спокойный лингвист и Google переводят

Передача NULL к аргументам, которые призывают NSError**, чистый ленивый.

7
задан Thomi 8 October 2009 в 12:48
поделиться

5 ответов

Я написал приложение с открытым исходным кодом, чтобы сделать это с помощью файлов gettext .po, его нетрудно изменить для файлов Qt Linguist. Демо и исходный код php доступны на http://pepipopum.dixo.net

3
ответ дан 7 December 2019 в 10:04
поделиться

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

. ts-файлы, созданные с помощью инструмента lupdate , на самом деле являются простыми XML-файлами (и даже не такими сложными - просто откройте их в текстовом редакторе и посмотрите сами). Поэтому вы можете использовать различные инструменты / библиотеки XML для редактирования элементов в файле. Qt даже поставляется с одним .

1
ответ дан 7 December 2019 в 10:04
поделиться

Да, это возможно; и на самом деле совсем несложно!

Я написал C ++ api до того, как использовал Google Translate Ajax Javascript API (это единственный существующий API Google Translate), используя libCURL для приблизительного перевода незавершенной игры.

Поскольку Qt linguist использует файлы XML в соответствии с указанным выше человеком, их будет довольно легко перевести и записать в допустимый файл XML!

0
ответ дан 7 December 2019 в 10:04
поделиться

Вы можете использовать lconvert для преобразования файлов в .po

lconvert -if ts -of po -o myFile.po myfile.ts

Затем пропустите их через переводчик Пола Диксона, а затем снова конвертируйте, используя lconvert .

lconvert -if po -of ts -o myFile.ts myfile.po
2
ответ дан 7 December 2019 в 10:04
поделиться

Несколько способов:

if (element.firstChild) {
    // It has at least one
}

или функция hasChildNodes () :

if (element.hasChildNodes()) {
    // It has at least one
}

или свойство length свойства childNodes :

if (element.childNodes.length > 0) { // Or just `if (element.childNodes.length)`
    // It has at least one
}

Если вы хотите знать только о дочерних элементах (в отличие от текстовых узлов, узлов атрибутов и т.д.) во всех современных браузерах (и IE8 - фактически, даже IE6) вы можете сделать это: (спасибо Флориан !)

if (element.children.length > 0) { // Or just `if (element.children.length)`
    // It has at least one element as a child
}

Это зависит от свойства children , которое не было определено в DOM1 , DOM2 , или DOM3 , но которое имеет почти универсальную поддержку. (Он работает в IE6 и вверх и Chrome, Firefox и Opera в по крайней мере еще в ноябре 2012 года, когда это было первоначально написано.) При поддержке старых мобильных устройств обязательно проверьте наличие поддержки.

Если вам не нужна IE8 и более ранняя поддержка, вы также можете сделать это:

if (element.firstElementChild) {
    // It has at least one element as a child
}

, которая полагается на firstElireChild . Как и child , он также не был определен в DOM1-3, но в отличие от children он не был добавлен в IE до IE9.

Если вы хотите придерживаться чего-то определенного в DOM1 (может быть, вам придется поддерживать действительно неясные браузеры), вы должны сделать больше работы:

var hasChildElements, child;
hasChildElements = false;
for (child = element.firstChild; child; child = child.nextSibling) {
    if (child.nodeType == 1) { // 1 == Element
        hasChildElements = true;
        break;
    }
}

Все это является частью DOM1 , и почти универсально поддерживается.

Было бы легко завершить это в функции, например:

function hasChildElement(elm) {
    var child, rv;

    if (elm.children) {
        // Supports `children`
        rv = elm.children.length !== 0;
    } else {
        // The hard way...
        rv = false;
        for (child = element.firstChild; !rv && child; child = child.nextSibling) {
            if (child.nodeType == 1) { // 1 == Element
                rv = true;
            }
        }
    }
    return rv;
}
-121--773134-

Можно проверить, имеет ли элемент дочерние узлы element.hasChildNodes () . Будьте осторожны в Mozilla это вернет true, если является пробел после тэга, так что вам нужно будет проверить тип тэга.

https://developer.mozilla.org/En/DOM/Node.hasChildNodes

-121--773136-

посмотрите на http://omegat.org

он интегрирует google translate, автоматический поиск словаря, память переводов и многое другое.

OmegaT читает и записывает множество форматов, включая .po и Open Office (XML). Не уверен в общих XML, но есть такие инструменты, как xml2po.

0
ответ дан 7 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: