Запятая, которая увеличила все европейские цены в 100 раз
Парсер цен, который удалял запятые, прочитал немецкое 9,99 € как 999. Ничего не сломалось, ничего не выглядело неправильно, и модель дохода тихо сообщала цифры в сто раз больше.
Цены — это единственный вход, где ошибка на порядок выглядит на графике совершенно правдоподобно. Подписочное приложение, показывающее $6,499 в год, абсурдно, если задуматься, и совершенно непримечательно, если просто просматривать дашборд.
Что делал код
Парсер удалял разделители тысяч перед сопоставлением цифр, что корректно для английского и неверно для большей части Европы. Немецкий стор печатает 9,99 €, запятая — десятичная точка, и её удаление даёт 999.
Поскольку модель дохода считывает ценовую лестницу с того стора, который сейчас на экране, открытие отслеживаемого приложения на немецкой вкладке подставило ему якорную цену 6,499 вместо 44.36. Завышение в 147 раза, без ошибки, без предупреждения и без видимых симптомов.
Исправление и почему определение локали было неверным ответом
Очевидное исправление — посмотреть стор и применить его соглашение. Мы этого не сделали, потому что парсеру также передаются строки, происхождение которых он не может знать наверняка, а поиск, молча откатывающийся к английскому, воссоздаёт ошибку в более труднонаходимой форме.
Вместо этого десятичный разделитель определяется позицией. Если встречаются и точка, и запятая, самая правая считается десятичной точкой: 1.234,56 и 1,234.56 разбираются корректно, и невозможно понять, из какой они страны. Если встречается только один, он считается разделителем тысяч, когда за ним ровно три цифры, и десятичной точкой в остальных случаях.
Та же ошибка, но с другим суффиксом
Затем Индонезия. Apple печатает 829,000 рупий как "Rp 829ribu", где ribu по-индонезийски означает тысячу. Если читать буквально, это 829 рупий, около пяти центов США, что против американской цены $69.99 было бы опубликовано как самая драматичная находка локализации на экране.
Слова-величины теперь обрабатываются. Но эта таблица никогда не будет полной, потому что любой стор может напечатать слово, которое никто на нашей стороне не видел, поэтому есть и нижний порог: цена, конвертирующаяся менее чем в 2% от базового рынка, не публикуется как ненадёжная. Самый дешёвый реальный рынок, который мы измеряем, Турция, находится на уровне 5%, так что защита отлавливает ошибки на порядок, не подвергая сомнению реальное ценообразование.
Похожие
- 90% топовых приложений никогда не тестируют свою иконку: что показало исследование 1000 приложений
- Никто не может продать вам объём поиска в App Store
- Цены Sensor Tower в 2026 году: сколько это на самом деле стоит
- Potto стал вирусным в TikTok. Вот что с этим сделал App Store
Блог · Кейсы · Free ASO tools · Продукты · Конфиденциальность и условия · AsoTheory