Я работаю над облачным переводом для моего сайта. Я перевожу весь контент. После перевода контент должен быть сохранен в 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) )
})
Результат довольно странный, потому что он несовместим.
- 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. журнал показывает перевод, моя ошибка.