Skip to content

es: ресинхрон локали под текущую ru-теорию - #859

Merged
fey merged 5 commits into
mainfrom
locales-es-resync
Aug 5, 2026
Merged

es: ресинхрон локали под текущую ru-теорию#859
fey merged 5 commits into
mainfrom
locales-es-resync

Conversation

@fey

@fey fey commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Зачем

Испанские файлы части уроков остались от прежних версий курса: где-то это заглушка в одно-два предложения против 3–7 КБ русского текста, где-то перевод другого, уже переписанного урока. Из-за этого испанский студент видел либо огрызок теории, либо задание, не совпадающее с тестом.

Самый наглядный случай — 40-define-functions/100-define-function: условие требовало реализовать printMotto() с выводом Winter is coming, а тест сверяет Hello, World! из sayHello(). Упражнение было непроходимо вне ru.

Что сделано

23 файла в 8 модулях, по коммиту на модуль:

модуль что было
20-arithmetics у 60-infinity расходилось последнее предложение
31-advanced-strings 25-interpolation, 30-symbols, 70-slices, 90-multiline-strings — заглушки на 4–7% от ru
33-data-types 52-data-types-immutability и 55-data-types-casting — заглушки
35-calling-functions теория описывала несуществующую функцию round(), урок давно про toFixed()
38-objects 100-objects был переводом старой версии с прототипами и Math.abs; у двух других не хватало разделов
40-define-functions все четыре урока — переводы других, более старых уроков
50-loops 15-conditions-inside-loops без разбора по шагам, 30-syntactic-sugar — список из пяти строк

Правило разделения, уже применённое в exercises-php и exercises-python: проза — на языке локали, строки в коде, которые печатаются или проверяются — английские, потому что файлы решения и теста в CB общие на все локали. Кириллицы в js-коде не было, так что здесь только перевод текста.

Проверка

  • Структурный паритет с ru у всех сопоставленных уроков: число код-блоков и заголовков совпадает.
  • Соотношение объёма es/ru не ниже 1.00 у теории. Порог откалиброван на 72 php-уроках, проверенных от начала до конца: у добросовестного перевода медиана 1.09, минимум 1.02.
  • Ни одного упражнения, где тест сверяет строку, которая есть в ru-условии и отсутствует в es.
  • Кириллицы в es-локали не осталось ни в одном .md.

Файлы решений и тестов не тронуты — правки только в es/README.md и es/EXERCISE.md.

🤖 Generated with Claude Code

fey added 5 commits August 5, 2026 15:56
Испанские файлы этих уроков остались от прежней версии курса: у
25-interpolation, 30-symbols, 70-slices и 90-multiline-strings вместо урока
лежала заглушка из одного-двух предложений против 3–5 КБ русского текста.

Переведено заново с текущего ru: теория четырёх уроков плюс условия 70-slices
(не было блока с ожидаемым выводом и указания использовать slice()) и
90-multiline-strings (не было фразы про шаблонную строку).

У 60-infinity расходилось одно предложение: ru заканчивается примером про
границы, es — устаревшим «Este tema se analiza en detalle en Hexlet».

25-interpolation/es/EXERCISE.md не тронут: перевод там актуальный и блок
ожидаемого вывода совпадает с тестом дословно.
52-data-types-immutability и 55-data-types-casting: испанская теория была
заглушкой на 2–5% от русского объёма. Переведено заново с текущего ru, включая
разделы про parseInt/parseFloat, String(), Boolean() и Math.trunc().

135-calling-functions-default-params: испанская теория описывала несуществующую
функцию `round()` с двумя параметрами, тогда как урок давно построен на методе
`toFixed()`. Условие описывало совсем другое задание — «округли number до двух
знаков» вместо расчёта поездки, который проверяет тест
(`37.8\n2426.76\n607`). Переведены и теория, и условие.

Валюта в условии не указана: в русском «в рублях», для испанской локали
опущено, как уже сделано в php и python.
100-objects: испанский был переводом более старой версии урока — рассказывал про
прототипы и Math.abs, а нынешних разделов «Методы строк» с replace(), «Метод и
функция: сравнение», «Методы возвращают значения» и «Свойства и методы в
выражениях» не содержал. Добавлена и заметка о том, что учебная функция length()
из hexlet-basics/string больше не нужна — с этого урока используется .length.

200-methods-immutability: не было разделов «Методы не меняют оригинал» (с trim() и
сохранением результата) и «Переприсвоение переменной».

500-method-chain: не было диаграммы разбора цепочки, разделов «Цепочка после
среза» и «Где цепочка заканчивается». Попутно исправлен пример с забытым вызовом:
было `name.toUpperCase.toLowerCase`, в ru `name.toUpperCase.toLowerCase()`.
Все четыре урока модуля были переводами других, более старых версий:

- 100-define-function: испанский рассказывал про отправку письма через
  импорт mailer, а урок давно про определение своих функций. Условие требовало
  реализовать printMotto() с выводом «Winter is coming», тогда как тест сверяет
  `Hello, World!` из sayHello() — упражнение было непроходимо вне ru.
- 150-return: испанский был про обработку почтовых адресов и стрелочные функции,
  а урок — про return, разницу с console.log и код после return.
- 340-default-parameters: не было примеров про repeat(), склейку с разделителем и
  несколько параметров по умолчанию. Условие описывало задачу многословно и в
  другой форме, чем текущее ru.
- 350-type-annotations: не было разделов про типы в аннотациях, void, параметры
  по умолчанию и статическую проверку.

В примере describe() русское «25 лет, рост 1.7» переведено как «25 años,
altura 1.7» — это теория, файл на локаль, поэтому здесь испанский, а не
нейтральный английский.
15-conditions-inside-loops: не было раздела «Работа по шагам» с разбором первых
итераций, вводного примера с чётными числами и предупреждения о том, что счётчик
увеличивается вне if — иначе цикл зависает на первом нечётном числе.

30-syntactic-sugar: испанский был списком из пяти строк вместо урока с разделами
про сокращённые присваивания, сахар в циклах, конкатенацию строк и полный список
поддерживаемых операторов.
@fey
fey merged commit c9c9315 into main Aug 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant