Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Мій шлях в IT (JavaScript Frontend)
Added 06 Jan 2025 🌐 UK

Мій шлях в IT (JavaScript Frontend)

@frontend_blog1
Number of subscribers: 230
Photos: 31
Links: 56
Description:
Блог про мій шлях до IT індустрії Якщо потрібна безкоштовна допомога чи порада: @maxim_lg_ua Мій профіль на LinkedIn linkedin.com/in/maksym-maslov
Source

Мій шлях в IT (JavaScript Frontend) | Вчора в мене була одна з ситуацій, які, на жаль, періодично трапляютьс...

Telegram community logo - Мій шлях в IT (JavaScript Frontend) Мій шлях в IT (JavaScript Frontend) @frontend_blog1
291 Views/Reach 2025-07-03 07:21 Message №74
Вчора в мене була одна з ситуацій, які, на жаль, періодично трапляються.Я витратив майже три години, щоб замінити " " на " ".

Без перебільшень. Надаю скрін з пулл реквеста. Задача була в тому, щоб пофіксити вміст буфера обміну при копіюванні повідомлення в чаті. Цей зміст мав переклади через react-i18next, які містили динамічні данні, які під час перекладу повинні були підставлятися зі змінних. В двох словах як це повинно було працювати:const message= "Hello world"const translate = t("copyMessage", { message });
а десь в файлах en/uk.json:{ copyMessage: "Your message is {message}"}
console.log(translate) // "Your message is Hello world"
Натомість я отримував "Your message is {message}".

Я перелопатив доку i18next, я переписував конфіги, намагався відокремити символи переноса рядків від фігурних дужок, я годину спілкувався з чатом GPT і в решті решт, просто випадково, стер один "пробіл" і поставив інший. І все запрацювало.Звідки там взявся саме такий пробіл і чому раніше все працювало?

Справа в тому, що тут стояв якийсь "неразривний пробіл", який міг потрапити в цей файл у випадку, коли текст було скопійовано з якихось нотаток, якогось редактору тексту чи перекладача. І візуально відрізнити їх просто неможливо. Раніше цей проєкт був на Next і ми використовували для перекладу лібу "next-intl

". Нещодавно ми видалили Next і залишили тільки React, і були вимушені перейти на "react-i18next

". Чому саме так - я не можу сказати, бо я не інвестігейтив це питання і під час цього переходу працював на іншому проєкті. Але справа в тому, що в "next-intl

" все працювало, а в "react-i18next

" цей пробіл просто зламав весь функціонал. Ось так буває, лінтер і prettier не сваряться, все чудово білдиться, але бага все одно може бути через один неочевидний символ.