web-standards-ru / dictionary

Словари по фронтенду
Creative Commons Attribution Share Alike 4.0 International
2.18k stars 599 forks source link

Sibling combinators #320

Open skip405 opened 6 years ago

skip405 commented 6 years ago

КМК, использование слова «соседство» вместо «соседа» немного искажает.

Понимая всю сложность передачи в русском языке слова sibling в отношении элементов имеющих общего родителя, предлагаю вариант сиблинг. Генетический термин в качестве подтверждения наличия такого слова в языке :)

pepelsbey commented 6 years ago

Слово сиблинг при довольно близком соседе и нулевом (важно!) употреблении — это что-то странное.

SelenIT commented 6 years ago

С этим «соседством» и раньше были вопросы, но именно на нем (не без труда) сошелся консенсус в прошлый раз.

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

skip405 commented 6 years ago

Сильно в спор идти не буду, но sibling «соседом» вы не переведёте ни в какой иной ситуации, а фронтенд почему-то будет исключением?

ОК, ладно, sibling — это сосед... а сосед — это sibling? Кто вообще такой сосед? Только тот, кто с твоего же этажа? Или этаж не важен? Может из соседнего дома? А через семь кварталов на одной и той же улице он тоже ещё сосед? А через 15? Сплошные вопросы ))

pepelsbey commented 6 years ago

Давайте не скатываться в изобретение языка. Мы не минобр или минкульт какой-нибудь, мы просто фиксируем, направляем. Ну напишем мы «сиблинг» в словаре, останемся довольны. Но никто так как ни говорил, так и не будет. Толку-то?

SelenIT commented 6 years ago

Что такое соседний элемент в DOMе, по-моему, понятно интуитивно. Мало кому придет в голову называть соседними элементы из разных родителей. А вот кто такой «сиблинг», боюсь, сходу поймут разве что генетики или те, кто и так знает английский...

Вот что, имхо, можно уточнить, так это то, что это селекторы/комбинаторы не просто соседа/соседей, а именно следующих соседей, что поиск идет только вперед. Кстати, на MDN с какого-то перепугу «селектором следующего элемента» обозвали как раз комбинатор ~, что лично меня бы запутало, т.к. для меня «следующий» — это следующий непосредственно (как «следующий год», «на следующей остановке» и т.п.). Может, заодно и там исправить? :)

skip405 commented 6 years ago

По делу: Есть вариант с сестринскими элементами, который в принципе встречается в русскоязычном сегменте.

adjacent sibling вполне может быть «примыкающим/прилегающим элементом». На мой взгляд фраза «непосредственный сосед» точно так же ничего не объясняет для новичков, как и «примыкающий сиблинг». adjacent sibling combinator был бы «комбинатором примыкающего элемента». М?

Было бы как-то так:

Говоря про изобретение языка, а как ты думаешь это должно происходить; кто, если не разработчики должны изобретать варианты, профессора в минобре? Оно ж не «само» в язык попадает, так чего отмахиваться? К примеру, я сегодня собираюсь открыть ишью Worklet, поскольку статьи про Гудини скоро будут как грибы появляться, и начнётся обсуждение. И ты думаешь, что «ворклет» (или любой другой придуманный вариант вроде «работничка») не будет изобретением? Будет, конечно. И пусть.

pepelsbey commented 6 years ago

Ворклет — это что-то новое, на это есть все шансы повлиять. Этим селекторам сто лет в обед, мы можем только зафиксировать в этом случае. Если говорить про задачу назвать разные селекторы, то важно решать её в контексте — не по одному, а в списке всех типов селекторов.

См. также как мы в Академии назвали селекторы: ч. 1, ч. 2, ч. 3.

SelenIT commented 6 years ago

Конечно, это сильно opinionated;), но лично меня (в роли новичка) «примыкающий/прилегающий» могло бы ввести в ступор, направив мысли в сторону визуальной близости. В DOM-инспекторе лично я никакого прилегания не вижу, там просто соседние строчки кода, а «примыкающим» сбоку к родителю мне мог бы показаться и первый потомок. Понятно, что это вопрос привычки...

@pepelsbey, а кстати, почему в словарик не попали термины из Академии? На мой взгляд, какой-то селектор действительно звучит и запоминается лучше, чем селектор/комбинатор чего-то (причем если у селекторов что-то — это сами элементы, то у комбинаторов — отношения между ними). Может, действительно внедрить удачный вариант «сестринский» для ~, «соседа» ограничить ближайшим соседом (имхо, вполне интуитивно), и получить стройную схему, где каждый селектор/комбинатор характеризуется одним прилагательным?

А альтернативные варианты, употребимые и не очень, можно указать в скобках после «тж.».

Ну и MDN привести в соответствие, на всякий случай:)

pepelsbey commented 6 years ago

Можно обсудить и сделать второй заходи по селекторам вот прямо здесь, в рамках обсуждения сиблингов. Если найдём что-то лучше, чем варианты Академии, то и в Академии поменять сможем.

SelenIT commented 6 years ago

Мне варианты Академии очень нравятся краткостью и запоминаемостью (в сочетании с употребимостью, что называется, in the wild), а также тем, что одним словом можно назвать и комбинатор, и весь селектор с ним (уходит проблема сосед/соседство). Смущает только выбивающийся из ряда «селектор последующих элементов», но это не критично, к тому же он в любом случае намного лучше MDNовского варианта. Ну и совсем мелочь... «соседний селектор» лично для меня тоже скорее соседнее правило в CSS-файле, чем селектор соседнего элемента, но это уже «opinionated» дальше некуда и с этим я вполне могу жить:)

P.S. Для + еще существует (в т.ч. в MDN) вариант «смежный селектор/комбинатор» (хотя лично я едва ли могу назвать этот вариант идеальным).

skip405 commented 6 years ago

Почему важно перевести слово adjacent, вы спросите? А я отвечу :) Потому что оно противопоставлено слову general. То есть — есть general, есть adjacent. Тот же «сосед» поэтому и выкручивался через «непосредственный» и посредственный просто. Продолжаю считать «примыкающий элемент» и «сестринский элемент» вполне подходящими вариантами перевода adjacent sibling и general sibling.

Лингв. справка: В английском языке если существительное (или герундий/глагол) поясняет другое существительное, то оно становится типо «главным» и принимает на себя ударение. Напр. knitting kit, hot water bottle — ударными словами при чтении должны быть knitting и water, как бы кто ни хотел иначе. Переводятся в русский язык они обычно тоже соответствующе — бутылка с горячей водой, набор для вязания. Если поясняющим словом является прилагательное, то такого сдвига не происходит. Напр. beautiful girl, interesting book, существительные получают ударения и переводятся как обычные фразы.

Это я к чему — это к тому, что во фразе adjacent sibling selector ключевым словом является sibling, а не selector. Переводить его, как «какой-то там селектор» нежелательно, он «селектор чего-то». Хотите верьте, хотите — нет :)

@SelenIT мнение про визуальное прилегание справедливо в полной мере. Давай попробуем перевести ситуацию на английскую почву, как английский новичок воспринимает слово adjacent? Точно также как и мы воспринимаем «примыкающий»... наверное ))) Про инспектор и ДОМ речь же не идёт пока.

SelenIT commented 6 years ago

И всё-таки главное слово в compound noun — именно последнее, определяемое. А существительные в роли определений, AFAIK, постепенно дрейфуют в сторону прилагательных до степени смешения с ними (passenger plane, конечно, можно перевести как ~плоскость пассажира~ самолёт с пассажирами/для пассажиров, но привычнее и естественнее по-русски всё-таки пассажирский самолёт).

Насчет, того, как англоговорящие воспринимают adjacent — хороший вопрос! Кембриджский словарь дает варианты very near, next to, or touching. Как по мне, первые два значения ближе-таки к нашему «соседнему» (жалко, нет прилагательного от «рядом»)... но тут уже я пристрастен:).

А насчет DOM и инспектора — имхо, зря речь не идет:). На мой взгляд, F12 — это первое, с чем надо освоиться новичку, т.к. в HTML нельзя слепо полагаться на теги в разметке, и надо как можно раньше приучаться рассматривать ту структуру, с которой реально имеет дело браузер, в подходящем для этого инструменте.

skip405 commented 6 years ago

Попытался сделать понятное описание и разложить по полочкам.

sibling (также general sibling), сестринский элемент. В CSS так называют элементы, следующие после формирующего (англ. former element). Напр. в селекторе code ~ p code является формирующим элементом, p является сестринскими (одного уровня) элементами, следующими в HTML после code. ~ является комбинатором сестринских элементов. Целевым элементом являются элементы p.

adjacent sibling, примыкающий элемент. В CSS так называют первый из сестринских элементов. Напр. в селекторе code + p code является формирующим элементом, p является первым сестринским элементом, примыкающим к code, + является комбинатором примыкающего элемента. Целевым элементом является элемент p.

adjacent sibling selector, селектор примыкающего элемента, см. примыкающий элемент. adjacent sibling combinator, +, комбинатор примыкающего элемента, см. примыкающий элемент.

general sibling selector, селектор сестринских элементов, см. сестринский элемент. general sibling combinator, ~, комбинатор сестринских элементов, см. сестринский элемент.

Ну норм же описание, люди ))) Единственное, что режет глаз, (нет, не бревно) — это фразы вида «элементом являются элементы». И да, продолжаю пропихивать «примыкающий» (не прилегающий) в качестве точного аналога слова adjacent, зная, что так пока никто не говорит и вариант не нашёл широкого применения. Считаю, что никому неизвестный, но правильно передающий смысл вариант куда важнее, чем неправильный, но популярный.


@SelenIT твой классный пример с самолётом (как и очевидная разница между swimming pool и swimming girl) является подтверждением, что под такие фразы нельзя подобрать один паттерн перевода. Переходя к sibling combinator и sibling selector, я всё же настроен предлагать «селектор чего-то», как в примерах выше и как написан текущий вариант с соседом, поскольку ты и сам заметил, как звучит «соседний селектор». Он действительно отражает соседство двух правил в одном файле. Похожая проблема представляется и в browsing context, хоть я и предложил «браузерный», а не какой-нибудь «браузинговый» контекст, нужно будет разрулить перевод browser context (если такое сочетание вообще встречается), который тоже вполне может быть «браузерным».

SelenIT commented 6 years ago

@skip405, моё главное возражение против комбинатора сестринских элементов и т.п. в том, что если селектор действительно выбирает элементы, то комбинатор не комбинирует элементы — он выражает отношение между элементами, соответствующими простым селекторам, которые он комбинирует, чтобы полученный с его помощью сложный селектор мог выбрать соответствующий элемент. Именно поэтому был селектор соседнего элемента, но комбинатор соседства. А любая неточность в определении, на мой взгляд, мешает и пониманию.

Варианты с прилагательным, на мой взгляд, этой проблемы лишены — прилагательное само по себе более абстрактно, а существительное задает ему контекст, в котором интуитивно понятно, что сестринский селектор — это селектор сестринских элементов, а сестринский комбинатор — это комбинатор, выражающий отношение сестринства между частями селектора. Поскольку при этом они еще и 1) короче, 2) легче для запоминания, 3) больше распространены в обиходе — на мой взгляд, этого достаточно для того, чтобы предпочесть их.

И, увы, я не могу согласиться, что примыкающий — более точный перевод для adjacent element (в контексте DOM-дерева, к которому применяется CSS), чем соседний элемент. Начиная с меньшей благозвучности (корень -мык- часто несет негативную окраску — «помыкать», «умыкнуть» и т.п.), совершенно лишнего здесь, на мой взгляд, причастного суффикса -ющ- (элемент ведь ничего не делающий, он просто сидит себе рядом с другим, по соседству с ним!), и заканчивая оттенком не просто близости, а тесного касания, которое у adjacent, согласно кембриджскому словарю, никак не основное и вообще факультативное. Смысл adjacent element в контексте DOM не в том, что они касаются или прилегают/примыкают друг к другу вплотную, а всего лишь в том, что между ними нет других элементов — они соседствуют напрямую. Проблему с двусмысленностью соседнего селектора я предложил решить заменой его на соседский селектор — но опять же, не стоит эту проблему преувеличивать (в конце концов, читатель веб-стандартов явно не идиот и понимает контекст:). В общем, я не вижу от введения этого термина выигрыша ни в точности, ни в выразительности. Полагаю, именно поэтому он и не прижился (хотя попытки бывали и раньше).

На правах конструктивного оффтопа, в CSS слово adjacent встречается в еще одном контексте — как adjacent margins (те самые внешние отступы, которые могут «схлопываться»). Вот для этого случая, по-моему, варианты примыкающие или смежные вполне уместны — там действительно есть оттенок именно соприкосновения.

P.S. Ну и former element, по-моему, явно предыдущий/предшествующий, а вовсе не «формирующий» (тогда было бы forming).

skip405 commented 6 years ago

Спасибо за пояснение позиции, @SelenIT я не буду аргументы уже подбирать, надо закруглиться, как мне кажется :) Переведи, пожалуйста, типичный разговор в типичной компании, если не затруднит, чтобы и в контексте разговора были понятны твои варианты, не только в контексте словарной статьи.

Dev 1: Damn, why are all the spans red and not just the first one? Dev 2: Hm, that's because you target general siblings, not the adjacent one.

skip405 commented 6 years ago

«сестринский комбинатор» :) без улыбки я не могу это читать )) да и «комбинатор сестринских элементов» не лучше )) блин, почему так сложно?!

SelenIT commented 6 years ago

без улыбки я не могу это читать ))

Может, это не минус, а плюс? Вызвало эмоциональную реакцию (тем более позитивную) — легче запомнилось?)

Разговор я перевел бы примерно так:

1: Блин, почему у меня все спаны покраснели, а не только первый? 2: Гм, это потому что ты выбираешь все сестринские элементы, а не только ближайшего соседа.

На мой взгляд, то, что в живой речи термин может использоваться в вариациях — это нормально. В репликах ведь не было слов селектор и комбинатор, так что «в лоб» словарная статья сюда бы всё равно не подошла))

skip405 commented 6 years ago

@SelenIT по поводу former мне так тоже сначала показалось, но я чёт потом подумал, что может это form-former как work-worker. Да, это мой бзик )