• Как правильно верстать сайт с арабскими и хинди языком?

    @Flying
    Поскольку недавно пришлось добавлять в одном проекте арабский язык - поделюсь полученным опытом:

    Вёрстку как правило переделывать не нужно, обычно достаточно изменения стилей, но только в случае если сам сайт свёрстан с применением современных техник, в первую очередь flexbox. Если у вас там float'ы или таблицы - то ой, задача по сложности вырастет на пару порядков и почти наверняка не обойдётся без доработки html кода. Если же в этом аспекте всё в порядке и ваш проект построен на flexbox - то основная масса изменений сводится к одной строчке CSS:
    body {
        direction: rtl;
    }

    это "перевернёт" все горизонтальные flexbox'ы и по сути сделает за вас всю основную массу работы по адаптированию сайта к RTL языкам. Конечно, в зависимости от того как именно у вас будет подключаться стиль (отдельные стили для RTL или только патч или всё вместе) реальный селектор может быть, к примеру html[dir=rtl] + body, но это уже детали.

    Тем не менее, даже если flexbox автоматизирует для вас кучу ручного труда - есть целый ряд ситуаций когда необходимы доработки вручную. Основных направлений несколько:

    1. Горизонтальные отступы. Это самая большая часть работы по адаптации т.к. вам необходимо будет "перевернуть" и их тоже, заменив, к примеру, margin-left на margin-right и наоборот, то же самое для padding'а
    2. Абсолютное / относительное позиционирование в горизонтальной плоскости. Речь идёт о свойствах left и right, их, как можно догадаться, тоже необходимо поменять местами
    3. Размеры шрифтов. Поскольку, к примеру, арабский шрифт, обычно выглядит меньше и тоньше чем, к примеру, английский - возможно возникнет потребность увеличить размеры шрифтов (font-size, line-height) и, возможно, подстроить стилизацию (font-weight)
    4. text-align - в ряде ситуаций может потребоваться изменить его на противоположный
    5. :first-child и :last-child, стоит быть внимательным и перепроверить корректность получаемого результата, к примеру если к этим псевдо-элементам добавляется дополнительный отступ - вам, возможно, придётся менять местами и селекторы
    6. Нужно адаптировать визуальные элементы содержащие направление, к примеру стрелки / уголки и т.п. В ряде случаев их можно повернуть, но где-то необходимо будет рисовать отдельную версию


    Если вы используете CSS препроцессоры - то я очень рекомендую написать mixin'ы для рендера этих свойств и адаптировать код таким образом чтобы изменяющиеся стили рендерились через них. Я выложил набор mixin'ов которые использовал в своём проекте, среди них нет mixin'ов для отступов и шрифтов т.к. у меня эти вопросы решаются по-другому, но думаю что там не будет ничего сложного.

    Общая схема адаптации которую я использовал в проекте:
    1. Добавление direction: rtl
    2. "Переворачивание" отступов, это самая большая часть работы т.к. они чаще всего встречаются
    3. Проверка вёрстки, для каждого выпавшего элемента добавление патчей с использованием mixin'ов, ссылку на которые я дал выше
    4. Подбор изменений для шрифтов, адаптация шрифтовых параметров


    Пример выдернутого наудачу из проекта куска для демонстрации патчей, это стиль добавления иконки к строке текста, для RTL языка её нужно было опускать ниже:
    &.with-icon {
        $icon-size: 1.85em;
        @include offset(h $icon-size 0);
    
        &:before {
            // Позиция иконки меняется на противоположную
            @include hpos($left: -1em, $auto: true);
            font-size: $icon-size;
            // Подстраивается высота иконки относительно текста
            @include ltr() {
                top: 45%;
            }
            @include rtl() {
                top: 65%;
                // Стоит обратить внимание что для RTL языков иконка дополнительно переворачивается, 
                // там стрелка, так что работает нормально, но в других местах это может быть по-другому
                transform: translateY(-50%) rotate(180deg);     
            }
        }
    }


    Надеюсь это описание будет полезным :)
    Ответ написан
    2 комментария
  • VSCode no source control providers registered?

    Wispik
    @Wispik
    vs code no source control provider registered
    ты издеваешься? Каждый твой вопрос про vscode элементарно гуглится по названию темы твоего вопроса
    Ответ написан
    3 комментария
  • VScode как сделать бэкап?

    Wispik
    @Wispik
    Ответ написан
    Комментировать
  • Laravel в чем ошибка?

    @Giperoglif
    нет пхп модуля для SQLite

    php-sqlite3
    Ответ написан
    4 комментария
  • HTML как убрать эти подсказки браузера?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer

    spoiler
    браузер основывается на атрибутах type, name, value, а также может анализировать class, id и связанный с полем label
    Ответ написан
  • Drizzle, откуда это взять?

    @maksam07
    Это переменные окружения.
    Эти переменные обычно определяются в .env файле в корне проекта.

    DB_ACCOUNT_ID=ваш_accountId
    DB_DATABASE_ID=ваш_databaseId
    DB_TOKEN=ваш_token


    Подробнее читайте в документации
    Ответ написан
    9 комментариев
  • Почему при использовании Clerk возникает ошибка?

    Может, просто "use client" надо добавить?
    Ответ написан
    Комментировать
  • VSCode как можно убрать эту верхнюю панель?

    Ищите в настройках titlebar и выбирайте параметр custom
    Ответ написан
    3 комментария
  • React Graphql в чем ошибка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    react-apollo@3.1.5 требует @types/react ^16.8.0, но Ваш проект использует @types/react@18.3.3.

    react-apollo project is deprecated
    Попробуйте @apollo/clien вместо react-apollo.
    Ответ написан
    Комментировать
  • Как через Node JS можно отправить сообщение на номер телефона?

    @Kazilsky
    Базовый NodeJS насколько я помню не имеет таких плюшек
    Но ничего, прибегнем к тёмной стороне, к библиотекам людей.
    Специально для тебя посмотрю библиотеку (у неё нету документации, бывает что-ж...)
    Выяснял немного, тебе нужен в прямом подключение LTE модем любого вида, ардуино с модулем сим карты, телефон.
    В самой библиотеке также указывается ещё и другой метод использования.
    Либо искать сервисы что занимаются таким и молится что у них есть подходящий API, я бы выбрал этот вариант.
    Ссылка на библиотеку: https://www.npmjs.com/package/sms
    Помог начинающий ютубер: https://www.youtube.com/channel/UCG2q5vcCkzY-XgonV...
    Ответ написан
    Комментировать
  • Почему не добавляется класс следующему элементу после 2 клика?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Метод querySelector возвращает первый элемент, который соответствует селектору. В вашем конкретном случае querySelector('.btn') - это всегда первая кнопка. Тут вопрос не в количестве кликов, а в том, что логика действий завязана на первую кнопку.
    Ответ написан
    Комментировать
  • Vite как включить строгую типизацию для Typescript?

    Lynn
    @Lynn
    nginx, js, css
    TypeScript не требует указания типа если он может сам его вывести и в общем случае лучше ему не мешать.

    Но если очень хочется, то вам надо настроить правило @typescript-eslint/typedef в ESLint.

    Ещё раз повторюсь, даже авторы правила для ESLint считают что это плохая идея.
    Ответ написан
    9 комментариев
  • Angular Routes в чем ошибка?

    Xuxicheta
    @Xuxicheta Куратор тега Angular
    инженер
    RouterModule в компонент не импортится. Да и вообще forRoot в компонентах не используется.
    Посмотрите как делается роутинг https://angular.dev/guide/routing/common-router-tasks
    Ответ написан
    2 комментария
  • Faker JS Node JS в чем ошибка?

    @fakerjs/faker !== @faker-js/faker
    В том, который вы установили, нет никакого datatype.
    Ответ написан
    2 комментария
  • Где тут ошибка?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    $ json-server --version
    1.0.0-beta.1


    $ json-server --help
    Usage: json-server [options] <file>
    
    Options:
      -p, --port <port>  Port (default: 3000)
      -h, --host <host>  Host (default: localhost)
      -s, --static <dir> Static files directory (multiple allowed)
      --help             Show this message
      --version          Show version number


    А вот если ставить не последнюю версию, то вот такой результат

    $ json-server --version             
    0.17.4

    $ json-server --help                
    json-server [options] <source>
    
    Опции:
      -c, --config                   Path to config file
                                                  [по умолчанию: "json-server.json"]
      -p, --port                     Set port                   [по умолчанию: 3000]
      -H, --host                     Set host            [по умолчанию: "localhost"]
      -w, --watch                    Watch file(s)                     [булевый тип]
      -r, --routes                   Path to routes file
      -m, --middlewares              Paths to middleware files              [массив]
      -s, --static                   Set static files directory
          --read-only, --ro          Allow only GET requests           [булевый тип]
          --no-cors, --nc            Disable Cross-Origin Resource Sharing
                                                                       [булевый тип]
          --no-gzip, --ng            Disable GZIP Content-Encoding     [булевый тип]
      -S, --snapshots                Set snapshots directory     [по умолчанию: "."]
      -d, --delay                    Add delay to responses (ms)
      -i, --id                       Set database id property (e.g. _id)
                                                                [по умолчанию: "id"]
          --foreignKeySuffix, --fks  Set foreign key suffix (e.g. _id as in post_id)
                                                                [по умолчанию: "Id"]
      -q, --quiet                    Suppress log messages from output [булевый тип]
      -h, --help                     Показать помощь                   [булевый тип]
      -v, --version                  Показать номер версии             [булевый тип]
    
    Примеры:
      json-server db.json
      json-server file.js
      json-server http://example.com/db.json
    
    https://github.com/typicode/json-server
    Ответ написан
    6 комментариев
  • React Effector почему count не увеличивается и не передается в компоненте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    // const count = counter.getState().count
    const count = useStore(counter).count;
    Ответ написан
    Комментировать
  • Docker в чем ошибка?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Выглядит, как будто сервис докера не запущен.
    Ответ написан
    Комментировать
  • Почему в RTK Query эта ошибка вылазит?

    Elaryks
    @Elaryks
    В документации написано, что импорт для React должен быть таким (обратите внимание, откуда импортируется):

    import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
    Ответ написан
    Комментировать
  • В чем ошибка в коде?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Привет, ознакомься с документацией

    https://laravel.com/docs/11.x/routing#dependency-i...

    И попробуй внести правки в свой код в соответствии с докой

    use Illuminate\Http\Request;
    
    Route::post('/contact/submit', function (Request $request) {
        return $request->all();
    })->name('contact-form');
    Ответ написан
    1 комментарий