creates a productTitle text db entry and does not translate it. (#171)

* creates a productTitle text db entry and does not translate it.

* disabled the translate from aws

* dont translate the titles
This commit is contained in:
Arwid Thornström
2025-05-27 10:39:22 +02:00
committed by GitHub
parent c08787422f
commit d93ec646e2
2 changed files with 1 additions and 109 deletions
+1 -9
View File
@@ -515,6 +515,7 @@ export class ProductAPI extends BaseSQLDataSource {
this.updateProductField(id, 'artNo', `e${id}`); this.updateProductField(id, 'artNo', `e${id}`);
await this.updateProductField(id, 'name', formattedName); await this.updateProductField(id, 'name', formattedName);
await this.updateProductField(id, 'batch', fixedBatch); await this.updateProductField(id, 'batch', fixedBatch);
return id; return id;
} }
@@ -537,15 +538,6 @@ export class ProductAPI extends BaseSQLDataSource {
promises.push(promise); promises.push(promise);
} }
if (oldProd.fields.name !== info.name) {
const promise = this.textsApi.translateProductName(
info.name,
oldProd.path,
uniquePath,
);
promises.push(promise);
}
const publishingDate = info.publishingDate; const publishingDate = info.publishingDate;
// Some notes about timezone here: // Some notes about timezone here:
// If client sets YYYY-MM-10T00:00:00.000+02 (which admin does) the timestamp // If client sets YYYY-MM-10T00:00:00.000+02 (which admin does) the timestamp
-100
View File
@@ -43,108 +43,8 @@ export class TextsAPI extends SQLDataSource {
} }
} }
async translateProductName(
name: string,
oldPath: string,
newPath: string,
): Promise<void> {
// Check if we have an entry already, if so update it
const textId = await this.upsertTextId(newPath, oldPath);
const locales = await this.marketLocaleApi.getLocales();
for (let i = 0; i < locales.length; i++) {
let langCode = this.getLanguageCode(locales[i]);
// If we have a fallback locale we skip translating
if (locales[i].fallbackId) {
continue;
}
const input: TranslateInput = {
text: name,
targetLanguageCode: langCode,
};
const translated = await translateText(input);
await this.upsertTextDataEntry(textId, translated, locales[i].id);
}
}
/**
* Upsert translated entry to the i18n-texts_data table
* @param text The translated text to insert
* @param localeId The id of the locale
*/
private async upsertTextDataEntry(
textId: number,
text: string,
localeId: number,
) {
// Check if we have an entry already
const textDataEntry = await this.knex
.select('*')
.from('i18n-texts_data')
.where({ textid: textId, locale_id: localeId })
.first();
if (textDataEntry) {
// Update existing entry
await this.knex('i18n-texts_data')
.where({ textid: textId, locale_id: localeId })
.update({ text: text });
} else {
//Insert new entry
await this.knex('i18n-texts_data').insert({
text: text,
textid: textId,
locale_id: localeId,
});
}
}
private getLanguageCode(locale: Locale) { private getLanguageCode(locale: Locale) {
let langCode = locale.value.substr(0, 2); let langCode = locale.value.substr(0, 2);
return langCode == 'nn' ? 'no' : langCode; return langCode == 'nn' ? 'no' : langCode;
} }
/**
* Upsert translated entry to the i18n-texts table returning the entry (textId)
* @param newKey the new name of the text key
* @param localeId the old name of the text key
*/
private async upsertTextId(newKey: string, oldKey: string): Promise<number> {
let textEntry = await this.knex
.select('*')
.from('i18n-texts')
.where({ name: oldKey, category: 'productTitles' })
.first();
const textNewEntry = await this.knex
.select('*')
.from('i18n-texts')
.where({ name: newKey, category: 'productTitles' })
.first();
// New key did exist, which is kind of wrong but return it for updating the name
if (textNewEntry?.textid) {
return textNewEntry.textid;
}
let textId = textEntry?.textid;
// No entry, create one
if (!textId) {
const res = await this.knex('i18n-texts')
.insert({ name: newKey, category: 'productTitles' })
.returning('*');
textEntry = res[0];
}
// Update table if different
if (oldKey !== newKey) {
await this.knex
.table('i18n-texts')
.update({ name: newKey })
.where({ name: oldKey, category: 'productTitles' });
}
return textEntry.textid;
}
} }