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

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

@frontend_blog1
Number of subscribers: 236
Photos: 30
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 не сваряться, все чудово білдиться, але бага все одно може бути через один неочевидний символ.