Mommy RefuelТрохи більше простору для тебе.
UK
ОНОВЛЕННЯ ПРОДУКТУ

Перемикання мовинарешті працює — розповідаю, чому не працювало

Оновлення продукту · 5 хв читання

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

Екран чек-іну з варіантами настрою від «Важко» до «Яскраво» та енергії від «Повна» до «Порожньо», англійською.
Екран настрою й енергії в чек-іні — дизайн застосунку станом на середину вересня 2026.

Головне

  • Вибір мови змінював налаштування, але не завжди надійно перемальовував застосунок цією мовою — це оновлення виправляє причину, а не симптом.
  • Фінальне, спрощене рішення: застосунок тепер керує мовою через єдиний механізм, який читає сама iOS, тож більше немає ризику, що половина екрана одна мовою, а половина — іншою.
  • Дорогою аудит експорту виявив 402 ключі перекладу, які застосунок реально використовує, але яких не було в жодному неанглійському файлі мови — тепер вони заповнені для всіх восьми мов.
  • Того ж дня з'явився новий теплий темний режим «dark rose», а в Налаштуваннях — перемикач вигляду (Система/Світла/Темна).
  • Усе це вийшло в білдах TestFlight 15, 16 і 17.
01

Про що це оновлення

Привіт, я Сергій, засновник Mommy Refuel. Через два дні після того, як я додав шість нових мов і вибір мови при першому запуску, я сів це перевірити — і виявив, що вибір мови насправді не робив того, що обіцяв. Це оновлення про те, як я виправив це по-справжньому, плюс новий темний режим, що вийшов поруч. Розповідаю реальну послідовність подій, включно з невдалою першою спробою, бо краще ви знатимете, що насправді сталося, ніж прочитаєте охайний підсумок, який пропускає момент, коли перше виправлення було не зовсім правильним.

02

Баг: вибір мови не завжди справді її змінював

Вибір мови коректно записувався в налаштування, але нічого насправді не казало запущеному застосунку перечитати свій текст новою мовою — тож інтерфейс міг лишитися точно таким самим. Моє перше виправлення, того ж ранку, додало LocalizationManager, який при запуску перепризначає текстовий бандл застосунку так, щоб він брав рядки з обраної мови, плюс живий режим, який на льоту підміняв бандл і перемальовував видимий екран. Перевірене в симуляторі при перемиканні українська → німецька → англійська, воно працювало, і я випустив його як білд 15.

Але це виправлення використовувало одразу два окремі механізми: мою власну підміну бандла для тексту та окреме перевизначення локалі в SwiftUI, поряд із системним налаштуванням (AppleLanguages), яким сама iOS користується для частини вбудованої поведінки. Коли ці два розходилися — наприклад, моє перевизначення казало «українська», а системне налаштування досі казало «англійська» — частина екрана відображалася однією мовою, а частина іншою. Це гірший баг, ніж той, з якого я почав, бо він непослідовний, а не просто неправильний.

03

Справжнє виправлення: одне єдине джерело правди

Чесне рішення полягало в тому, щоб прибрати складність, а не додавати ще одну. Я повністю видалив кастомну підміну бандла й перевизначення локалі в SwiftUI, тож тепер застосунок пише лише в AppleLanguages — єдине налаштування, з якого читають і видимий текст, і власний механізм розпізнавання рядків самої системи. Двом механізмам більше нема як розійтися, бо він тепер один. Ціна цього — зміна мови тепер повністю застосовується при наступному відкритті застосунку, а не миттєво посеред сесії, і це насправді звичайна поведінка iOS (так завжди працювало Налаштування → Мова); тепер застосунок прямо про це й каже.

04

402 переклади, яких тихо бракувало

Поки я був у коді локалізації, я запустив власний інструмент експорту Xcode як аудит, і він виявив дещо гірше за баг вище: приблизно 438 текстових ключів, які застосунок реально використовує в коді, взагалі не мали запису в більшості файлів мов — включно з українською. Такі речі, як «Діти», «1 дитина», підрахунок тижнів і текст тижневого звіту, мовчки поверталися до англійської на кожному неанглійському телефоні, і так було відколи ці функції вийшли. Я переклав 422 реальні текстові ключі для всіх восьми неанглійських мов і додав їх у кожен файл мови; 13 ключів були суто форматними (без тексту для перекладу), а 3 рядки про кризові ситуації й безпеку свідомо лишаються англійською до професійного перегляду — та сама політика, що й завжди. Після цього я повторно запустив експорт, щоб переконатися, що пробілів більше не лишилося.

Останній повний прохід по всіх мовах вручну знайшов ще одну помилку: підпис вкладки «Timeline» німецькою залишався англійською, тоді як усі інші мови мали власне слово. Виправлено.

Екран сну в чек-іні з повзунком на 6.5 години, порожнім необов'язковим полем нотатки й рядком «Приватно за замовчуванням».
Екран сну в чек-іні — дизайн застосунку станом на середину вересня 2026.
05

Новий темний режим і спосіб його обрати

Того ж ранку я переробив темну тему застосунку в теплий вигляд «dark rose», повністю побудований на наявній системі колірних токенів, тож кожен екран перетемнюється автоматично, без окремої роботи для кожного. Фон піднімається до теплого графіту замість майже-чорного, акцентний колір перемикається з бордового на м'який рожевий, щоб не губитися на темному фоні, а панель вкладок отримує щільніший, структурованіший вигляд із теплим виділенням активного пункту. Світлий режим лишився недоторканим.

Поруч із цим у Налаштуваннях з'явився явний пункт «Вигляд» — Система, Світла чи Темна — за тим самим принципом, що й налаштування мови, і він застосовується миттєво й повністю, без перезапуску (на нього не поширюється те саме обмеження часу запуску iOS, що й на мову). Також я виправив сам рядок мови так, щоб він показував правильну рідну назву для кожної з восьми мов застосунку, а не лише для англійської й української.

Екран «2-хвилинного перезавантаження» з дихальним колом і п'ятьма кроками: ноги на підлозі, розслабте плечі, повільний вдих, помітьте, що може почекати, оберіть маленький крок.
Екран «2-хвилинного перезавантаження» — дизайн застосунку станом на середину вересня 2026.
06

Де і коли

  • 09:30 — Випущено новий теплий темний режим «dark rose», побудований на наявній системі колірних токенів; світлий режим не змінено (ad137fb).
  • 09:35 — Перше виправлення перемикання мови: LocalizationManager перепризначає бандл застосунку й перемальовує екран наживо (c3ae0fa). Вийшло як білд 15.
  • 09:44 — У Налаштування додано пункт «Вигляд» (Система/Світла/Темна); рядок мови тепер показує правильну рідну назву для всіх восьми мов (8bb1219).
  • 09:51 — Білд піднято до 15 (v2.0.1) для TestFlight, з повною локалізацією, живим перемиканням мови, темним режимом, Запасами/Витратами й виправленням DAU (9d06eef).
  • 10:02 — Номер білда для iOS піднято ще раз для TestFlight (73e024c). Білд 16.
  • 10:18 — Аудит експорту виявляє 402 реальні ключі перекладу, яких бракувало в усіх восьми неанглійських мовах; перекладено, додано, перевірено формат (061a664).
  • 10:28 — Виправлення причини: мова тепер керується лише через AppleLanguages, єдиний механізм, який читають і інтерфейс, і iOS; усунено баг двох механізмів із ранкового першого виправлення (6158c87).
  • 10:51 — Повна перевірка якості по всіх восьми мовах знаходить і виправляє останню помилку: підпис вкладки «Timeline» німецькою (602e173).
  • 11:04 — Білд піднято до 17 для TestFlight, з виправленням причини мовного бага й заповненими перекладами (8e5fd94).
07

Що далі

Я краще прилюдно покажу, як виправляю таку помилку, ніж вдаватиму, що білд 15 одразу був правильним. Білди з 15 по 17 вийшли в TestFlight того ж тижня; реліз в App Store з цією роботою вийде окремо, з моїм власним завантаженням. Наступне в перекладах: провести кризові й безпекові рядки новіших мов через професійний людський перегляд, щоб чесно зняти англійський запасний варіант, а не лишати його на машинному чорновику.

Екран «Ви» у поточному застосунку Mommy Refuel у темній темі, з етапом життя, Care Circle і рядками акаунту.
Екран «Ви» у поточному застосунку, вересень 2026.

Питання, які ставлять мами

Зміна мови застосунку тепер застосовується миттєво?

Видимий текст оновлюється одразу для більшості екрана, але повністю зміна застосовується при наступному відкритті застосунку — так само працює зміна мови в самій iOS, і Налаштування тепер прямо про це кажуть.

Чи вплинув баг локалізації на мої нотатки чи дані?

Ні. Це була суто проблема відображення — якою мовою показувався текст, — і ніяк не стосувалася того, як ваші дані зберігаються, рахуються чи захищаються.

Застосунок тепер повністю перекладений усіма мовами?

402 ключі, яких бракувало і які виявило це оновлення, заповнені для всіх восьми неанглійських мов. Невелика кількість рядків про кризові ситуації й безпеку свідомо лишається англійською скрізь, крім англійської й української, до професійного перегляду.

Як увімкнути темний режим?

Перейдіть у Налаштування → Вигляд і оберіть Темний (або Система, щоб слідувати налаштуванню телефону). Застосовується миттєво.

На якому білді має бути все це?

Білд 17 або новіший у TestFlight містить і виправлення мови, і заповнені переклади, і новий темний режим разом.

Доступність може залежати від встановленої версії застосунку. Статуси підтверджені засновником на момент публікації.

ЩЕ З БЛОГУУсі статті ↗︎
Екран онбордингу з питанням «Де ви зараз?» і варіантами: вагітність, післяпологовий період, планування або підтримка когось.

Чому я запускаю цей блог від першого дня Mommy Refuel

Я запускаю блог на mommyrefuel.com — справжні статті про материнство і добробут, і цей щоденник змін від мого імені, англійською і українською, а ще цього тижня ми розповідаємо про Mommy Refuel ширше.

Сергій Рогачов
Екран Refuel AI з підказками на кшталт «Чому мій бал сьогодні нижчий?» та «Допоможи підготуватися до лікаря».

Just talk: скажи або напиши, а Mommy Refuel розкладе по місцях

Без форм і меню — просто скажіть або напишіть про свій день, а Mommy Refuel запропонує, куди це віднести. Що саме зберегти, вирішуєте ви. Ось як це працює і чому я зробив саме так.

Сергій Рогачов
Екран підтвердження «Ви зробили чек-ін сьогодні» із зеленою галочкою і кнопкою «Зробити чек-ін знову».

20 вересня: виправляю реальний баг із мовою, білди 23-24

Один баг 20 вересня турбував мене більше за інші: зміна мови могла залишити половину екрана старою мовою. Ось у чому була причина, як я це виправив і що ще вийшло того дня.

Сергій Рогачов
ДЛЯ ЛЮДИНИ ВСЕРЕДИНІ МАТЕРИНСТВА

Зроби місце
для себе.

Отримати безкоштовний застосунок