Пожарная служба: перевод Google Cloud или пожарный магазин происходит странным образом - PullRequest
0 голосов
/ 06 января 2020

Я работаю над облачным переводом для моего сайта. Я перевожу весь контент. После перевода контент должен быть сохранен в Firestore. Мой код:

exports.translate = functions.firestore
    .document('translations/{langId}')
    .onCreate((change, context) => {

        require('events').EventEmitter.defaultMaxListeners = 30;

        const langId = context.params.langId;
        const db = admin.firestore();
        const basePage = db.collection('engPage');

        return db.collection('translations').doc(langId)
        .get()
        .then(docu => {

            const ref = db.collection('engPage');
            let pages = ['aboutUsPage', 'contactPage', 'footer', 'topbar'];

            pages.forEach(p => {
                ref.doc(p).get()
                .then(doc => {
                    if (!doc.exists) {
                        console.log('No such document!');
                    } else {
                        Object.entries(doc.data()).forEach(con => {

                            console.log('1.' + con); // log 1.
                            googleTranslate.translate(con[1], langId, function(err, translation) {
                                var obj = {};

                                obj[con[0]] = translation.translatedText;
                                console.log(obj); // log 2.
                                db.collection('translations').doc(langId +'/translation/' + p).set(obj);
                            })
                        })
                    }
                })
            })
        })
        .then(() => console.log('translated!') )
        .catch(err => console.log(err) )

    })

Результат довольно странный, потому что он несовместим.

  1. log

[ 'imprint', 'Imprint' ]

4:33:06.948 PM
translate
[ 'privacy', 'Privacy Policy' ]

4:33:07.549 PM
translate
[ 'text1', 'with our contact form' ]

4:33:07.648 PM
translate
[ 'header1', 'Leave us a Message' ]

4:33:08.248 PM
translate
[ 'text2', 'or write us diectly an email to' ]

4:33:08.249 PM
translate
[ 'inputEmail', 'E-Mail*' ]

4:33:08.249 PM
translate
[ 'inputWebsite', 'Website' ]

4:33:08.348 PM
translate
[ 'button', 'Send' ]
...

Отображает контент, который будет отправлено в облачный перевод. Все хорошо.

log 2

6:32:10.839 PM
translate
{ contact: 'Contact' }

6:32:11.939 PM
translate
{ inputComment: 'Laat een reactie achter*' }

6:32:12.139 PM
translate
{ button: 'Sturen' }

6:32:12.239 PM
translate
{ inputCompany: 'Bedrijf' }

6:32:12.539 PM
translate
{ home: 'Huis' }

6:32:12.739 PM
translate
{ aboutUs: 'Over ons' }

6:32:13.039 PM
translate
{ catalogue: 'catalogus' }

6:32:13.140 PM
translate
{ header3: 'onze filosofie' }

6:32:13.239 PM
translate
{ products: 'producten' }

6:32:13.339 PM
translate
{ text1: 'met ons contactformulier' }

6:32:13.340 PM
translate
{ inputEmail: 'E-Mail *' }

6:32:19.239 PM
translate
{ inputWebsite: 'Website' }

Не знаю, о чем идет речь об этом исключении, но на данный момент содержимое не завершено.

Сохраненные данные в firestore:

 nl / translation / contactPage / header1: Laat een bericht achter

Очень противоречиво то, что сохраняется в FireStore, но никогда не бывает более одного перевода на каждой странице.

Я довольно новичок в FireStore и javascript, код может быть немного грязно, извините.

Спасибо за ваше внимание.

edit:

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

...