From a55e8a9c7042629fb1c2d8ed3ce796c6546adcda Mon Sep 17 00:00:00 2001 From: gfbdrgng Date: Sat, 27 Jul 2024 14:13:46 +0000 Subject: [PATCH 1/2] Translated using Weblate (Russian) Currently translated at 98.9% (988 of 998 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ru/ --- locale/ru.po | 140 ++++++++++++++++++++++----------------------------- 1 file changed, 59 insertions(+), 81 deletions(-) diff --git a/locale/ru.po b/locale/ru.po index f02680de57ba0..0eee40cc9c32e 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-12-01 14:03+0000\n" +"PO-Revision-Date: 2024-07-28 05:09+0000\n" "Last-Translator: gfbdrgng \n" "Language-Team: none\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.3-dev\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.7-dev\n" #: main.c msgid "" @@ -103,11 +103,11 @@ msgstr "%q и %q должны быть разными" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c msgid "%q and %q must share a clock unit" -msgstr "" +msgstr "%q и %q должны иметь общую единицу тактового генератора" #: ports/nordic/common-hal/watchdog/WatchDogTimer.c msgid "%q cannot be changed once mode is set to %q" -msgstr "" +msgstr "%q не может быть изменен после установки режима на %q" #: shared-bindings/microcontroller/Pin.c msgid "%q contains duplicate pins" @@ -169,9 +169,8 @@ msgid "%q length must be >= %d" msgstr "Длинна %q должна быть >= %d" #: py/objmodule.c py/runtime.c -#, fuzzy msgid "%q moved from %q to %q" -msgstr "%q перешел из% q в% q" +msgstr "%q переместился из %q в %q" #: py/argcheck.c msgid "%q must be %d" @@ -211,9 +210,8 @@ msgid "%q must be a bytearray or array of type 'h', 'H', 'b', or 'B'" msgstr "%q должен быть массивом байтов или массивом типа «h», «H», «b» или «B»" #: shared-bindings/warnings/__init__.c -#, fuzzy msgid "%q must be a subclass of %q" -msgstr "%q должно быть подклассом %q" +msgstr "%q должен быть подклассом %q" #: ports/espressif/common-hal/analogbufio/BufferedIn.c msgid "%q must be array of type 'H'" @@ -225,7 +223,7 @@ msgstr "%q должен быть массивом типа 'h \"" #: shared-bindings/audiobusio/PDMIn.c msgid "%q must be multiple of 8." -msgstr "" +msgstr "%q должно быть кратно 8." #: ports/raspberrypi/bindings/cyw43/__init__.c py/argcheck.c py/objexcept.c #: shared-bindings/bitmapfilter/__init__.c shared-bindings/canio/CAN.c @@ -236,7 +234,7 @@ msgstr "%q должно быть типа%q или%q, а не%q" #: shared-bindings/jpegio/JpegDecoder.c msgid "%q must be of type %q, %q, or %q, not %q" -msgstr "" +msgstr "%q должен иметь тип %q, %q или %q, а не %q" #: py/argcheck.c py/runtime.c shared-bindings/bitmapfilter/__init__.c #: shared-module/synthio/__init__.c @@ -261,9 +259,8 @@ msgid "%q out of range" msgstr "%q вне диапазона" #: py/objmodule.c py/runtime.c -#, fuzzy msgid "%q renamed %q" -msgstr "%q переименован в %q" +msgstr "%q переименован %q" #: py/objrange.c py/objslice.c shared-bindings/random/__init__.c msgid "%q step cannot be zero" @@ -271,7 +268,7 @@ msgstr "Шаг %q не может быть нулём" #: shared-module/bitbangio/I2C.c msgid "%q too long" -msgstr "" +msgstr "%q слишком долго" #: py/bc.c py/objnamedtuple.c msgid "%q() takes %d positional arguments but %d were given" @@ -279,7 +276,7 @@ msgstr "%q() принимает %d позиционных аргументов, #: shared-module/jpegio/JpegDecoder.c msgid "%q() without %q()" -msgstr "" +msgstr "%q() без %q()" #: shared-bindings/usb_hid/Device.c msgid "%q, %q, and %q must all be the same length" @@ -458,9 +455,8 @@ msgstr ", в %q\n" #: shared-bindings/busdisplay/BusDisplay.c #: shared-bindings/epaperdisplay/EPaperDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#, fuzzy msgid ".show(x) removed. Use .root_group = x" -msgstr ".show(x) removed. Use .root_group = x" +msgstr ". Показать(x) удален. Используйте . корневую_группу = x" #: py/objcomplex.c msgid "0.0 to a complex power" @@ -880,7 +876,7 @@ msgstr "Блок данных должен следовать за блоком #: shared-module/jpegio/JpegDecoder.c msgid "Data format error (may be broken data)" -msgstr "" +msgstr "Ошибка формата данных (возможно, данные повреждены)" #: ports/espressif/common-hal/_bleio/Adapter.c #: ports/nordic/common-hal/_bleio/Adapter.c @@ -904,7 +900,7 @@ msgstr "Емкость места назначения меньше длины #: shared-module/jpegio/JpegDecoder.c msgid "Device error or wrong termination of input stream" -msgstr "" +msgstr "Ошибка устройства или неправильное завершение входного потока" #: ports/nordic/common-hal/audiobusio/I2SOut.c msgid "Device in use" @@ -978,16 +974,15 @@ msgid "Failed to acquire mutex, err 0x%04x" msgstr "Не удалось получить mutex, ошибка 0x%04x" #: ports/raspberrypi/common-hal/mdns/Server.c -#, fuzzy msgid "Failed to add service TXT record" -msgstr "Не удалось добавить запись обслуживания TXT" +msgstr "Не удалось добавить служебную запись TXT" #: shared-bindings/mdns/Server.c -#, fuzzy msgid "" "Failed to add service TXT record; non-string or bytes found in txt_records" msgstr "" -"Не удалось добавить запись TXT; непрочный или байт, найденный в txt_записях" +"Не удалось добавить служебную TXT-запись; в txt_records обнаружена нестрока " +"или байт" #: shared-module/rgbmatrix/RGBMatrix.c msgid "Failed to allocate %q buffer" @@ -1172,11 +1167,11 @@ msgstr "Недостаточное шифрование" #: shared-module/jpegio/JpegDecoder.c msgid "Insufficient memory pool for the image" -msgstr "" +msgstr "Недостаточный объем памяти для изображения" #: shared-module/jpegio/JpegDecoder.c msgid "Insufficient stream input buffer" -msgstr "" +msgstr "Недостаточный буфер ввода потока" #: ports/espressif/common-hal/wifi/Radio.c msgid "Interface must be started" @@ -1208,7 +1203,7 @@ msgstr "Внутренняя ошибка #%d" #: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c #: ports/cxd56/common-hal/pulseio/PulseIn.c shared-bindings/pwmio/PWMOut.c msgid "Internal resource(s) in use" -msgstr "" +msgstr "Используемые внутренние ресурсы" #: supervisor/shared/safe_mode.c msgid "Internal watchdog timer expired." @@ -1220,7 +1215,7 @@ msgstr "Прерванная ошибка." #: shared-module/jpegio/JpegDecoder.c msgid "Interrupted by output function" -msgstr "" +msgstr "Прерывается функцией выхода" #: ports/espressif/common-hal/espulp/ULP.c #: ports/espressif/common-hal/microcontroller/Processor.c @@ -1333,7 +1328,7 @@ msgstr "Слой должен быть группой (Group) или субкл #: shared-bindings/audiocore/RawSample.c msgid "Length of %q must be an even multiple of channel_count * type_size" -msgstr "" +msgstr "Длина %q должна быть четной, кратной количеству каналов * размер_типа" #: ports/espressif/common-hal/espidf/__init__.c msgid "MAC address was invalid" @@ -1341,7 +1336,7 @@ msgstr "MAC адрес был недействительным" #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "MITM security not supported" -msgstr "" +msgstr "Защита от MITM не поддерживается" #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" @@ -1386,7 +1381,7 @@ msgstr "Не хватает jmp_pin.%q [%u] прыгает на пин" #: shared-module/storage/__init__.c msgid "Mount point directory missing" -msgstr "" +msgstr "Отсутствует каталог точки монтирования" #: shared-bindings/busio/UART.c shared-bindings/displayio/Group.c msgid "Must be a %q subclass." @@ -1479,7 +1474,7 @@ msgstr "Нет IP" #: ports/cxd56/common-hal/microcontroller/__init__.c #: ports/mimxrt10xx/common-hal/microcontroller/__init__.c msgid "No bootloader present" -msgstr "" +msgstr "Отсутствует загрузчик" #: shared-module/usb/core/Device.c msgid "No configuration set" @@ -1575,7 +1570,7 @@ msgstr "Не воспроизводится (Not playing)" #: shared-module/jpegio/JpegDecoder.c msgid "Not supported JPEG standard" -msgstr "" +msgstr "Не поддерживается Стандарт JPEG" #: ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c #, c-format @@ -1603,9 +1598,9 @@ msgstr "Да" #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c -#, fuzzy, c-format +#, c-format msgid "Only 8 or 16 bit mono with %dx oversampling supported." -msgstr "Только 8 или 16 бит моно с поддержкой %d." +msgstr "Поддерживается только 8 или 16-битное моно с передискретизацией %dx." #: ports/espressif/common-hal/wifi/__init__.c #: ports/raspberrypi/common-hal/wifi/__init__.c @@ -1716,7 +1711,7 @@ msgstr "PWM канал среза A уже используется" #: shared-module/jpegio/JpegDecoder.c msgid "Parameter error" -msgstr "" +msgstr "Ошибка параметра" #: ports/espressif/common-hal/audiobusio/__init__.c msgid "Peripheral in use" @@ -1827,7 +1822,7 @@ msgstr "RISE_AND_FALL недоступен на этом чипе" #: shared-module/displayio/OnDiskBitmap.c msgid "RLE-compressed BMP not supported" -msgstr "" +msgstr "RLE-сжатый BMP не поддерживается" #: ports/stm/common-hal/os/__init__.c msgid "RNG DeInit Error" @@ -1896,7 +1891,7 @@ msgstr "Правый канал не поддерживается" #: shared-module/jpegio/JpegDecoder.c msgid "Right format but not supported" -msgstr "" +msgstr "Правильный формат, но не поддерживается" #: main.c msgid "Running in safe mode! Not running saved code.\n" @@ -1985,7 +1980,7 @@ msgstr "Укажите точно один из data0 или data_pins" #: supervisor/shared/safe_mode.c msgid "Stack overflow. Increase stack size." -msgstr "" +msgstr "Переполнение стека. Увеличьте размер стека." #: shared-bindings/alarm/time/TimeAlarm.c msgid "Supply one of monotonic_time or epoch_time" @@ -2078,7 +2073,7 @@ msgstr "Слишком много каналов в выборке." #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "Too many descriptors" -msgstr "" +msgstr "Слишком много дескрипторов" #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" @@ -2167,9 +2162,8 @@ msgid "Unable to allocate buffers for signed conversion" msgstr "Не удается выделить буферы для подписанного преобразования" #: supervisor/shared/safe_mode.c -#, fuzzy msgid "Unable to allocate to the heap." -msgstr "Не в состоянии выделить на кучу." +msgstr "Невозможно выделить место в куче." #: ports/espressif/common-hal/busio/I2C.c msgid "Unable to create lock" @@ -2294,12 +2288,12 @@ msgstr "Неподдерживаемый алгоритм хеширования #: ports/espressif/common-hal/socketpool/Socket.c msgid "Unsupported socket type" -msgstr "" +msgstr "Неподдерживаемый тип сокета" #: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c msgid "Update failed" -msgstr "" +msgstr "Обновление не удалось" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -2390,7 +2384,7 @@ msgstr "Вы нажали кнопку BOOT при запуске" #: ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h #: ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h msgid "You pressed the BOOT button at start up." -msgstr "" +msgstr "При запуске вы нажали кнопку BOOT." #: ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h msgid "You pressed the GPIO0 button at start up." @@ -2432,9 +2426,9 @@ msgid "__init__() should return None" msgstr "__init__() должен возвращать значение None" #: py/objtype.c -#, fuzzy, c-format +#, c-format msgid "__init__() should return None, not '%s'" -msgstr "__init__() should return None, not '%s'" +msgstr "__init__() должна возвращать Нет, а не \"%s\"" #: py/objobject.c msgid "__new__ arg must be a user-type" @@ -2507,9 +2501,8 @@ msgid "asm overflow" msgstr "Переполнение ASM" #: py/compile.c -#, fuzzy msgid "async for/with outside async function" -msgstr "async для/с внешней функцией async" +msgstr "async для/вместе с внешней async-функцией" #: extmod/ulab/code/numpy/numerical.c msgid "attempt to get (arg)min/(arg)max of empty sequence" @@ -2524,9 +2517,8 @@ msgstr "" "последовательности" #: py/objstr.c -#, fuzzy msgid "attributes not supported" -msgstr "Атрибуты пока не поддерживаются" +msgstr "Атрибуты не поддерживаются" #: extmod/ulab/code/ulab_tools.c msgid "axis is out of bounds" @@ -2566,7 +2558,7 @@ msgstr "двоичная операция %q не реализована" #: shared-module/bitmapfilter/__init__.c msgid "bitmap size and depth must match" -msgstr "" +msgstr "Размер и глубина растрового изображения должны совпадать" #: shared-bindings/bitmaptools/__init__.c msgid "bitmap sizes must match" @@ -2673,9 +2665,9 @@ msgid "can't convert %s to float" msgstr "не могу преобразовать %s в число с плавающей запятой" #: py/objint.c py/runtime.c -#, fuzzy, c-format +#, c-format msgid "can't convert %s to int" -msgstr "не может конвертировать %s в int" +msgstr "Невозможно преобразовать %s в int" #: py/objstr.c msgid "can't convert '%q' object to %q implicitly" @@ -2718,9 +2710,8 @@ msgid "can't implicitly convert '%q' to 'bool'" msgstr "не может неявно преобразовать '%q' в 'bool'" #: py/runtime.c -#, fuzzy msgid "can't import name %q" -msgstr "не может импортировать имя %q" +msgstr "Невозможно импортировать имя %q" #: py/emitnative.c msgid "can't load from '%q'" @@ -2777,14 +2768,12 @@ msgid "" msgstr "не может переключаться с ручного поля на автоматическую нумерацию поля" #: py/objcomplex.c -#, fuzzy msgid "can't truncate-divide a complex number" -msgstr "не может усечь сложное число" +msgstr "нельзя усекать и делить комплексное число" #: extmod/moductypes.c -#, fuzzy msgid "can't unambiguously get sizeof scalar" -msgstr "не может однозначно получить размер скаляра" +msgstr "Невозможно однозначно получить sizeof скаляра" #: extmod/modasyncio.c msgid "can't wait" @@ -2874,9 +2863,8 @@ msgid "comparison of int and uint" msgstr "сравнение int и uint" #: py/objcomplex.c -#, fuzzy msgid "complex divide by zero" -msgstr "сложное разделение на ноль" +msgstr "комплексное деление на ноль" #: py/objfloat.c py/parsenum.c msgid "complex values not supported" @@ -2992,9 +2980,8 @@ msgid "dtype must be float, or complex" msgstr "Тип d должен быть плавающим или сложным" #: extmod/ulab/code/ndarray_operators.c -#, fuzzy msgid "dtype of int32 is not supported" -msgstr "dtype of int32 не поддерживается" +msgstr "dtype int32 не поддерживается" #: py/objdeque.c msgid "empty" @@ -3128,7 +3115,6 @@ msgid "font must be 2048 bytes long" msgstr "Длина шрифта должна составлять 2048 байт" #: extmod/moddeflate.c -#, fuzzy msgid "format" msgstr "формат" @@ -3369,7 +3355,6 @@ msgid "interval must be in range %s-%s" msgstr "Интервал должен находиться в диапазоне %s-%s" #: py/compile.c -#, fuzzy msgid "invalid arch" msgstr "недействительная арка" @@ -3456,11 +3441,10 @@ msgstr "" "самообъектом" #: py/argcheck.c -#, fuzzy msgid "keyword argument(s) not implemented - use normal args instead" msgstr "" -"аргумент(ы) ключевых слов не реализован - вместо этого используйте обычные " -"арги" +"Аргумент(ы) ключевого слова не реализован - используйте вместо него обычные " +"аргументы" #: py/emitinlinethumb.c py/emitinlinextensa.c msgid "label '%q' not defined" @@ -3559,18 +3543,16 @@ msgid "memory allocation failed, heap is locked" msgstr "Не удалось выделить память, куча заблокирована" #: py/objarray.c -#, fuzzy msgid "memoryview offset too large" -msgstr "вид памяти компенсируется слишком большим" +msgstr "Слишком большое смещение просмотра памяти" #: py/objarray.c msgid "memoryview: length is not a multiple of itemsize" msgstr "вид памяти: длина не является множеством элементов" #: extmod/modtime.c -#, fuzzy msgid "mktime needs a tuple of length 8 or 9" -msgstr "mktime нуждается в толщине 8 или 9" +msgstr "mktime нужен кортеж длины 8 или 9" #: extmod/ulab/code/numpy/linalg/linalg.c msgid "mode must be complete, or reduced" @@ -3617,9 +3599,8 @@ msgid "name not defined" msgstr "Имя не определено" #: py/persistentcode.c -#, fuzzy msgid "native code in .mpy unsupported" -msgstr "родной код в .mpy без поддержки" +msgstr "Нативный код в .mpy не поддерживается" #: py/asmthumb.c msgid "native method too big" @@ -3865,9 +3846,8 @@ msgid "operation is not supported for given type" msgstr "Операция не поддерживается для данного типа" #: extmod/ulab/code/ndarray_operators.c -#, fuzzy msgid "operation not supported for the input types" -msgstr "не поддерживается для типов ввода" +msgstr "операция не поддерживается для типов ввода" #: py/modbuiltins.c msgid "ord expects a character" @@ -4097,9 +4077,8 @@ msgid "source_bitmap must have value_count of 8" msgstr "source_bitmap должен иметь значение_счет 8" #: extmod/modre.c -#, fuzzy msgid "splitting with sub-captures" -msgstr "разделение с подзахватами" +msgstr "разделение с помощью подзахватов" #: py/objstr.c msgid "start/end indices" @@ -4114,9 +4093,8 @@ msgid "stream operation not supported" msgstr "Потоковая операция не поддерживается" #: py/objarray.c py/objstr.c -#, fuzzy msgid "string argument without an encoding" -msgstr "строковый аргумент без кодирования" +msgstr "строковый аргумент без кодировки" #: py/objstrunicode.c #, fuzzy From b4504e12dea8e01a947e29c660759d5d8ac401a0 Mon Sep 17 00:00:00 2001 From: gfbdrgng Date: Mon, 29 Jul 2024 05:07:12 +0000 Subject: [PATCH 2/2] Translated using Weblate (Russian) Currently translated at 99.8% (997 of 998 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ru/ --- locale/ru.po | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/locale/ru.po b/locale/ru.po index 0eee40cc9c32e..7847b40fb2a0f 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-07-28 05:09+0000\n" +"PO-Revision-Date: 2024-07-29 17:55+0000\n" "Last-Translator: gfbdrgng \n" "Language-Team: none\n" "Language: ru\n" @@ -4097,14 +4097,13 @@ msgid "string argument without an encoding" msgstr "строковый аргумент без кодировки" #: py/objstrunicode.c -#, fuzzy msgid "string index out of range" -msgstr "строковый индекс вне диапазона" +msgstr "индекс строки выходит за пределы диапазона" #: py/objstrunicode.c -#, fuzzy, c-format +#, c-format msgid "string indices must be integers, not %s" -msgstr "струнные индексы должны быть целых чисел, а не %s" +msgstr "Индексы строк должны быть целыми числами, а не %s" #: extmod/moductypes.c msgid "struct: can't index" @@ -4135,9 +4134,8 @@ msgid "syntax error in uctypes descriptor" msgstr "Синтаксическая ошибка в дескрипторе UCTYPES" #: extmod/modtime.c -#, fuzzy msgid "ticks interval overflow" -msgstr "клещей интервал перегрузка" +msgstr "переполнение интервала тиков" #: ports/nordic/common-hal/watchdog/WatchDogTimer.c msgid "timeout duration exceeded the maximum supported value" @@ -4150,12 +4148,12 @@ msgstr "таймаут должен быть < 655.35 сек" #: ports/raspberrypi/common-hal/floppyio/__init__.c msgid "timeout waiting for flux" -msgstr "" +msgstr "таймаут ожидания потока" #: ports/raspberrypi/common-hal/floppyio/__init__.c #: shared-module/floppyio/__init__.c msgid "timeout waiting for index pulse" -msgstr "" +msgstr "таймаут ожидания индексного импульса" #: shared-module/sdcardio/SDCard.c msgid "timeout waiting for v1 card" @@ -4312,7 +4310,7 @@ msgstr "неподдерживаемая инструкция Xtensa '%s' с а #: shared-module/bitmapfilter/__init__.c msgid "unsupported bitmap depth" -msgstr "" +msgstr "неподдерживаемая глубина растрового изображения" #: shared-module/gifio/GifWriter.c msgid "unsupported colorspace for GifWriter" @@ -4328,9 +4326,8 @@ msgid "unsupported format character '%c' (0x%x) at index %d" msgstr "Неподдерживаемый символ формата '%c' (0x%x) при индексе %d" #: py/runtime.c -#, fuzzy msgid "unsupported type for %q: '%s'" -msgstr "неподдерживаемый тип для% q:%s \"" +msgstr "неподдерживаемый тип для %q: '%s'" #: py/runtime.c msgid "unsupported type for operator" @@ -4367,10 +4364,12 @@ msgid "" "weights must be a sequence with an odd square number of elements (usually 9 " "or 25)" msgstr "" +"Весом должна быть последовательность с нечетным квадратным числом элементов (" +"обычно 9 или 25)" #: shared-bindings/bitmapfilter/__init__.c msgid "weights must be an object of type %q, %q, %q, or %q, not %q " -msgstr "" +msgstr "Веса должны быть объектом типа %q, %q, %q или %q, а не %q " #: shared-bindings/is31fl3741/FrameBuffer.c msgid "width must be greater than zero"