Tell us what’s happening:
Ya realice todas la pruebas de echo pasa los 30 test pero cuendo pongo mis enlaces freecode me tira un error.
Render toma todas los test adjunto imagen
y desde code tambien, nada falla
ya modifique mi api.js tambien pero ya no se como seguir haciendo: ‘use strict’;
const Translator = require('../components/translator.js');
module.exports = function (app) {
const translator = new Translator();
app.route('/api/translate')
.post((req, res) => {
const { text, locale } = req.body;
if (text === undefined || locale === undefined) {
return res.status(200).json({ error: 'Required field(s) missing' });
}
if (text.trim() === '') {
return res.status(200).json({ error: 'No text to translate' });
}
if (!['american-to-british', 'british-to-american'].includes(locale)) {
return res.status(200).json({ error: 'Invalid value for locale field' });
}
const plain = translator.translate(text, locale);
const highlighted = translator.translateAndHighlight(text, locale);
if (plain === text) {
return res.status(200).json({
text,
translation: "Everything looks good to me!"
});
}
return res.status(200).json({
text,
translation: highlighted
});
});
};
adjunto tambien mi translator.js
const americanOnly = require('./american-only.js');
const americanToBritishSpelling = require('./american-to-british-spelling.js');
const americanToBritishTitles = require("./american-to-british-titles.js")
const britishOnly = require('./british-only.js')
class Translator {
translateAndHighlight(strText, strLocale) {
let strTranslated = '' + strText;
if(strLocale == 'american-to-british') {
// translate spelling
let keys = Object.keys(americanToBritishSpelling);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, '<span class="highlight">'+americanToBritishSpelling[key]+'</span>');
}
// translate titles
keys = Object.keys(americanToBritishTitles);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, '<span class="highlight">'+americanToBritishTitles[key]+'</span>');
}
// replace untranslatable words
keys = Object.keys(americanOnly);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, '<span class="highlight">'+americanOnly[key]+'</span>');
}
// format time (ex: 10:30 to 10.30)
let regex = /([0-9]{1,2})([:])([0-9]{1,2})/g;
strTranslated = strTranslated.replace(regex, '<span class="highlight">$1.$3</span>');
}
if(strLocale == 'british-to-american') {
let keys = Object.keys(americanToBritishSpelling);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+americanToBritishSpelling[key]+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, '<span class="highlight">'+key+'</span>');
}
keys = Object.keys(americanToBritishTitles);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+americanToBritishTitles[key]+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, '<span class="highlight">'+key+'</span>');
}
keys = Object.keys(britishOnly);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, '<span class="highlight">'+britishOnly[key]+'</span>');
}
let regex = /([0-9]{1,2})([\.])([0-9]{1,2})/g;
strTranslated = strTranslated.replace(regex, '<span class="highlight">$1:$3</span>');
}
return strTranslated;
}
translate(strText, strLocale) {
let strTranslated = '' + strText;
if(strLocale == 'american-to-british') {
let keys = Object.keys(americanToBritishSpelling);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, americanToBritishSpelling[key]);
}
keys = Object.keys(americanToBritishTitles);
for (let key of keys) {
// quitar el punto final del match usando \\b y escape de "."
let regex = new RegExp('\\b' + key.replace('.', '\\.') + '(?=\\s)', 'gi');
strTranslated = strTranslated.replace(regex, (match) => {
let replacement = americanToBritishTitles[key];
if (match[0] === match[0].toUpperCase()) {
replacement = replacement.charAt(0).toUpperCase() + replacement.slice(1);
}
return replacement;
});
}
keys = Object.keys(americanOnly);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, americanOnly[key]);
}
let regex = /([0-9]{1,2})([:])([0-9]{1,2})/g;
strTranslated = strTranslated.replace(regex, '$1.$3');
}
if(strLocale == 'british-to-american') {
let keys = Object.keys(americanToBritishSpelling);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+americanToBritishSpelling[key]+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, key);
}
keys = Object.keys(americanToBritishTitles);
for (let key of keys) {
let regex = new RegExp(`\\b${americanToBritishTitles[key]}\\b`, 'gi');
let replacement = key;
strTranslated = strTranslated.replace(regex, (match) => {
let formatted = replacement;
if (match[0] === match[0].toUpperCase()) {
formatted = replacement.charAt(0).toUpperCase() + replacement.slice(1);
}
return formatted;
});
}
keys = Object.keys(britishOnly);
for(let key of keys) {
let regex = new RegExp('(?<![\\w-])'+key+'(?![\\w-])', 'gi');
strTranslated = strTranslated.replace(regex, britishOnly[key]);
}
let regex = /([0-9]{1,2})([\.])([0-9]{1,2})/g;
strTranslated = strTranslated.replace(regex, '$1:$3');
}
return strTranslated;
}
}
module.exports = Translator;
###Your project link(s)
solution: https://boilerplate-project-american-british-gb1v.onrender.com
githubLink: GitHub - Silvanagb/boilerplate-project-american-british-english-translator
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Challenge Information:
Quality Assurance Projects - American British Translator