На каких языках говорят наши пользователи

    То, что в KolibriOS есть не русскоговорящие разработчики (хоть их и очень мало), некоторым из вас уже известно по моему предыдущему посту. Однако разработчикам самим, в свою очередь, интересно знать, есть ли у нас не русскоговорящие юзеры.

    До того, как мы задались этим вопросом, KolibriOS выпускалась на 2 языках: русском и английском. Соответственно, каждая новая фича и каждая правка программы/ядра требовали от программиста, их делавшего, добавления/исправления всех сообщений, кнопок и лейблов на обоих языках.1 Может быть, целесообразно перестать выпускать английскую сборку, и сконцентрировать все свои усилия на русской?

    1 Если говорить откровенно, поскольку наш проект свободный и бесплатный, и все наши программисты работают на добровольной основе, заставить их делать изменения / писать программы на обоих языках никто не может. Так что у нас есть разработчики, которые выводят все сообщения/кнопки/лейблы только на английском языке (тот же hidnplayr, к примеру, хотя он делает это по вполне понятной причине — он не знает русского), а есть и такие, кто пишет всё только по-русски (поэтому их программы/игры включены только в русскую сборку). К сожалению, при таком подходе, пользователи ни одной из двух сборок KolibriOS не получают "full experience" (либо локализация не полная, либо программа вообще отсутствует).

    Чтобы иметь примерное представление о сабже, мы провели опрос среди членов нашей группы в Фейсбуке. На сегодняшний день, в группе около 350 человек (из них проголосовало порядка 100-1502), так что выборку можно считать достаточно полной. Результаты голосования представлены на скриншоте:



    2 Такая неточность при подсчёте голосов объясняется тем, что Facebook не предоставляет никаких способов сохранить результаты опроса в файл, а вопрос был задан: "На каких языках вы говорите?". Следовательно, пользователи должны были отметить все языки, которые они знают, что они и сделали. Facebook же, по одному ему известной причине, показывает общее число голосов (в нашем случае — 237), а не число проголосовавших. Поскольку один человек может знать несколько языков, общее число голосов ни о чём не говорит. Мне пришлось вручную нажимать на плюсики и подсчитывать участников, но очень быстро мне это надоело (да и результаты меняются быстрее, чем я успеваю всё пересчитать), поэтому проголосовало 100-150 человек, точнее не скажу. «Галочками» отмечены те языки, на которых говорю я сам (или хотя бы понимаю). Это английский, голландский, русский, украинский и иврит. Facebook их считает за 5 голосов (вместо 1 проголосовавшего).

    Как мы видим, носителей английского языка больше всех (79 человек), что, в общем-то, логично (английский — язык мирового общения). Следом за ними, идут носители испанского3 языка (28 человек), что тоже естественно, ведь на испанском говорят, кроме самой Испании, также почти все её бывшие американские колонии (Мексика, Аргентина, Уругвай, Чили, Перу и т.д.).

    3 Да-да, именно испанского, несмотря на то, что вторым в списке русский. Наглый Facebook отсортировал список так, как посчитал нужным, не спросив, подходит ли это мне, и не предоставив никаких возможностей для выбора сортировки самому. Я долго думал, какая вообще логика в такой сортировке, но, наконец, понял: список сначала отсортирован по количеству людей у меня в друзьях (включая меня самого), проголосовавших за каждый ответ, а уже потом по количеству голосов вообще. Именно поэтому, 3>6, а 20>28

    Дальше будет сюрприз — третьим номером в списке (21 человек) внезапно идёт персидский, он же язык жителей Ирана (и некоторых соседних стран). Сначала я было подумал, что это либо ботнет / хакерская атака, либо плохо замаскированная попытка выведать у меня военную тайну (Поясню для тех, кто только что к нам присоединился: я еврей из Израиля, администратор официальной группы KolibriOS на Facebook. Об отношениях Ирана с Израилем, думаю, рассказывать не нужно.). А оказалось — нет, обычные IT-шники и юзеры, не хакеры и не из разведки. Вот чем их так привлекает наша операционная система, остаётся для меня загадкой. У нас есть одно предположение, похожее на правду: Так как США наложила эмбарго на Иран, то Microsoft, будучи компанией, зарегистрированной в США, не имеет права продавать им лицензионные копии Windows, а пиратские им негде обновлять и защищать от вирусов, так как, опять же, нет доступа к серверам Microsoft. Поэтому иранцы вынуждены пользоваться СПО (свободным программным обеспечением), и KolibriOS они тоже рассматривают как вариант. Но это только наше предположение — доказательств у нас нет. Может быть, кто-то из читателей прояснит? Сами персы ведут себя в нашей группе затворнически, в дискуссиях почти не участвуют.

    На четвёртом и шестом местах идут русский и украинский языки — их знают 20 и 10 человек, соответственно. Но здесь статистика врёт, так как на самом деле их гораздо больше (просто носители русского/украинского языка в основном пользуются ВКонтакте, а не Facebook). Поэтому будем считать, что русскоязычных большинство (более 1600 человек в нашей группе ВКонтакте, если даже только каждый десятый из них на самом деле пользователь KolibriOS, всё равно получается 160 человек — в 2 раза больше, чем англоязычных).

    Пятым по счёту идёт итальянский язык (11 человек). Остальные не так интересны (менее 10 проголосовавших).

    Эпилог


    По итогам голосования стало понятно, что английский язык нужно, конечно же, оставить, и продолжать собирать английскую сборку наравне с русской. Более того — два члена нашей группы в Фейсбуке (испаноговорящий из Уругвая и итальяноговорящий из Италии) предложили нам свою помощь в локализации KolibriOS на испанский и итальянский языки, соответственно. Мы долго отказывались, так как теперь программистам нужно будет делать каждую правку на четырёх языках. Эту помощь мы с радостью приняли, и с недавних пор на нашем официальном сайте KolibriOS доступна для скачивания уже на четырёх языках: русском, английском, испанском и итальянском.
    KolibriOS Project Team
    68.85
    Быстрая операционная система для бизнеса и хобби
    Share post

    Comments 30

      +5
      >программистам нужно будет делать каждую правку на четырёх языках

      А почему бы не выносить локализацию куда-то, чтобы потом… язычные пользователи могли помочь в переводе?
        +4
        Эта работа ведется, но также требует стандартизации подхода, а поскольку разработчики никому ничем не обязаны (т.к. не получают абсолютно никакого профита), но они с чистой совестью могут забить на это дело. Разумеется не лучший подход, но он позволил просуществовать проекту почти 10 лет, в то время как многие другие некоммерческие проекты разваливались.
          –1
          зачем работа? Что стандартизировать? просто выносить все фразы что может говаривать программа в отдельный фаил который будет подключаться при компилировании.
            +4
            Вы все же не понимаете ситуации.
              0
              вот именно по этому проекту 10 лет и там до сих пор незя нормально посёрфить интернет…
                +3
                А вы вероятно большой специалист по проектам с нулевыми финансовыми затратами разработки? Много успешных проектов за 10 лет вывели? Я хотел бы видеть конкретные примеры ваших успешных проектов с нулевыми финансовыми затратами разработки.
                  0
                  Я лично вывел ноль проектов. Собственно у меня нету хороших знаний английского языка, тем более технического английского по этому я не могу нормально разрабатывать свой проект. Так всё же что конкретно мешает тем програмистам которые хотят чтобы их программа была мультиязычной содержать все сообщения программы в отдельном фаиле?
                    +1
                    Вы читать умеете? Я ведь написал уже! Когда для человека разработка программ хобби, то «строить» его как минимум сложно — он просто забьет и пошлет вас подальше. Разработчик делает в первую очередь для себя любимого и навязывание ему дополнительных условий вызывает лишь раздражение. Впрочем иногда разработчики таки договариваются по некоторым вопросам.
                      0
                      Я бы формализовал: не «дополнительных условий», а «скучных дополнительных условий».
                        +2
                        Вот- вот! Никто эту работу не видит и не оценит, кроме разве другого разработчика. Пользователи видят лишь то что на поверхности, а конкретно, что выведено приложением.
                        0
                        Ну ведь много работы в мире OpenSource ведется именно на волонтерской основе.
                        Говорю по своему опыту — я сейчас участвую в разработке Ubuntu Phone Core Applications. Это мое первое участие, сразу признаюсь, но я вполне себе доволен тем, что выполняю пожелания менторов с целью сделать действительно хороший продукт, пригодный для интернационализации в том числе. И ничего в этом сложного нет, может быть просто среди разработчиков Kolibri OS другие отношения внутренние, я не берусь сразу обвинять, но оставлять в своей программе возможности для просто интернационализации — это нормально.

                        UPD: У меня период написания сообщений — раз в час, поэтому сжимаю еще одну мысль сразу в одно сообщение. Ниже я прочитал пояснение про сложности перевода, длину текста и динамический размер контролов. Как же так вышло, что изначально никто из разработчиков не подумал о переводах? Но как же так, ответьте на вопрос наконец — в вашей команде вообще не предусмотрено никаких средств интернационализации? И может быть даже… боюсь произносить вслух… для перевода нужно править исходный код?
                          +2
                          Большая часть того, с чем нашей команде приходится иметь дело в области прикладного ПО — это Legacy-код. В этом замечательном Legacy-коде, который был написан задолго до того, как большинство из нас вообще услышало о проекте, никто не думал об интернационализации. Никто не думал о том, что контролы вообще кому-то могут понадобиться. Никто не думал о том, что кто-то когда-то вообще будет это использовать. Ville (автор Menuet) поставил перед собой цель написать ОС с GUI на ассемблере, и эту цель он выполнил.

                          Legacy жалко выбросить, потому что теряешь функционал. Но и поддерживать всё это — неразумно. Наиболее вероятный вараинт, как мне кажется, такой: однажды большая часть существующего прикладного софта для Колибри будет объявлена устаревшей, и перестанет включаться в дистрибутив, а новые программы будут идеальными, ведь наш мир станет райским садом с разноцветными поняшами и добрыми драконами писаться с учетом всяческих полезных современных технологий.
                            +1
                            У нас действительно, во многих местах, для перевода нужно править исходный код. Ведь для каждого языка, склонение существительных, спряжение глаголов и длина слов разные:

                            if lang eq ru
                            ; подождите 5 секунд, 4/3/2 секунды, 1 секунду
                                    cmp     al, 5
                                    mov     cl, ' '
                                    jae     @f
                                    cmp     al, 1
                                    mov     cl, 0xE3 ; 'у' in cp866
                                    jz      @f
                                    mov     cl, 0xEB ; 'ы' in cp866
                            @@:
                                    mov     [time_str+9], cl
                            else if lang eq et
                                    cmp     al, 1
                                    ja      @f
                                    mov     byte [time_str+9], ' '
                                    mov     byte [time_str+10], ' '
                            @@:
                            else if lang eq sp
                            ; esperar 5/4/3/2 segundos, 1 segundo
                                    cmp     al, 1
                                    mov     cl, 's'
                                    ja      @f
                                    mov     cl, ' '
                            @@:
                                    mov     [time_str+10], cl
                            else
                            ; wait 5/4/3/2 seconds, 1 second
                                    cmp     al, 1
                                    mov     cl, 's'
                                    ja      @f
                                    mov     cl, ' '
                            


                            В других местах используется директива препроцессора, которая вставляет нужный файл с переводами, в зависимости от языка:

                            if lang eq ge
                            include "boot/bootge.inc"     ; german system boot messages
                            else if lang eq sp
                            include "boot/bootsp.inc"     ; spanish system boot messages
                            else if lang eq ru
                            include "boot/bootru.inc"      ; russian system boot messages
                            include "boot/ru.inc"          ; Russian font
                            else if lang eq et
                            include "boot/bootet.inc"      ; estonian system boot messages
                            include "boot/et.inc"          ; Estonian font
                            else
                            include "boot/booten.inc"      ; english system boot messages
                            end if
                            
                              +2
                              Вот это действительно крутой комментарий. Почему-то сразу об этой стороне вопроса не вспомнил.
                                +2
                                А что насчет использования юникода?
                                  +1
                                  Поддержки Unicode у нас пока нет, но если кто-то согласен нам с этим помочь, то мы будем очень признательны. Мы даже предлагали это как один из проектов на наш Summer of Code, но никто не взялся его делать.
                                    +2
                                    С Unicode у нас пока что бардак.
                                    Unicode может использоваться приложениями при условии, что текст будет выводиться через truetype, или будет конвертироваться в cp866 перед выводом на экран системными функциями. Ввод тоже придется обрабатывать приложению. Зато некоторая часть Unicode поддерживается в именах файлов.
                                    Вообще, unicode — достаточно обширный стандарт, чтобы где-то поддерживать его целиком и полностью. То не все кодовые плоскости поддерживаются, то шрифтов подходящих нет, то модифицирующие символы через пень-колоду сделаны. Чаще всего же проблемы с BiDi. Что характерно, тем людям, которые будут добавлять поддержку Unicode в Колибри, придется решать проблему BiDi одной из первых.
                              +2
                              По-видимому, вы никогда не занимались локализацией чего бы то ни было. Игры с пиратским переводом помните?
                              image
                              Никогда не задумывались, почему они такие? Понятно, что сам текст переведен через PROMT. Но откуда тогда взялись «Необход.» и другие перлы?
                                0
                                вообще то там как раз проблемам в том что всё было в исполняемом фаиле уже вшито. А у разработчиков есть уникальная возможность вшивать не отходя от кассы. Но есть проблема «программистам нужно будет делать каждую правку на четырёх языках.» и собственно я спрашивал почему необходимо делать какие то глупые стандартизации для создания простых «скучных дополнительных условий», которые я считаю необязательно навязывать. Я писал про тех программистов которые хотят мультиязычность в своих программах… а те кто хотят те могут и без всякой стандартизации. Я всего лишь спрашивал что им мешает…
                                  0
                                  «Just for fun» им мешает!
                                    +1
                                    Ну, тогда я предлагаю открыть любой exe-файл с помощью ResHacker, и заменить часть надписей в каком-нибудь диалоговом окне переводами. Скажем, на итальянский или испанский. Надеюсь, это поможет вам понять, в чем сложность локализаций.
                                      0
                                      у разработчиков есть исходный код… они ResHacker не пользуются
                                        +1
                                        Я пытаюсь донести простую мысль: надписи на разных языках имеют разную длину, соответственно, для каждого языка элементы интерфейса должны иметь разные размеры. Простым вынесением строк в отдельный файл проблему можно решить только на уровне «Прим.» вместо «Apply». Даже динамический размер кнопок и окон не поможет решить эту проблему полностью (хотя и допустим в том случае, если требуется поддержка десятков языков в кратчайшие сроки).
                                          +2
                                          Вы первый человек который действительно мне объяснил. Спасибо. Простите что не сразу вас понял. Я думал вы о другой проблеме. Есть такая игра dwarf fortress и она на английском языке. и нашлись смельчаки которые её переводят так вот там была проблема длинных слов в том что они переписывали их прямо в машинном коде и если слово случайно выезжало на занятые биты то игра могла просто испортиться поэтому там слова сокращались.
                                +1
                                Зачем 10 лет писать то, что нигде не может быть использовано by design? Вы создали замечательную систему на поиграться. А дальше что? Смысл таких статей на Хабре если никто и никогда систему под реальные задачи использовать не будет. Чего вы хотите добиться? Привлечения внимания к проекту? Кому он нужен? Какие задачи он позволяет решить? Да никаких. Только весело провести время в кругу asm программистов.

                                Посмотрите на helenos.org или HaikuOS. Системы созданы любителями, но у них есть реальные шансы занять свою нишу, а у вас какая ниша? 1% от читателей wasm.ru?

                                10 лет назад я даже сам игрался с вашей системой и писал что-то под нее. Сейчас смотрю и понимаю, что изменилось у вас мало. Серьезного софта под систему никогда не будет. Подходы у вас не те в основу заложены.

                                Хотите что-то концептуальное сделать, что не стыдно было показать, возьмите ядро той же Helen OS. Напишите для нее удобную графическую оболочку, создайте нормальную IDE и увидите, как программисты сами к вам потянутся. А пока этого нет и вы прибили себя к асссемблеру у вас не будет никакого развития десятилетиями.
                                  +2
                                  Можно я не буду вам отвечать? Мне надоело спорить со скептиками, которые большие специалисты по всем вопросам и знают что другие должны делать, когда и зачем. Более того скептики даже не запускают дистрибутив — они заранее знают что там.
                                    –1
                                    эх… если б ещё ихний wasm.ru работал бы… да и когда работал как-то толку там было мало. Я считаю что дело не в IDE, программировать можно хоть в блокноте, была бы документация мультиязычная, понятная, и незнаю чтоб в ней был нормальный поиск и чтоб она была написана сложными словами но при этом чтоб про каждое слово можно было бы раскрыть и чтоб прямо там же был рабочийкороткий пример… а также нужны примеры где будут сочетаться возможные комбинации сложных и простых примеров.
                                    Я вот например изучал язык java по учебнику. Там есть массивы,(с примерами) и объекты(тоже). но нет примера массива объектов.
                                      0
                                      эх… если б ещё ихний wasm.ru работал бы…
                                      wasm.ru не имеет к нам никакого отношения. Толк в нём есть — если задавать вопросы по существу, а не "Как сделать так, чтобы отпустило, пожалуйста :((", то, скорее всего, Вы получите ответ по существу.
                                      +2
                                      Знаете, в ваших словах есть доля истины. Немалая такая доля.
                                      Но «изменилось у вас мало» — это вы что-то напутали, я боюсь.

                                        +1
                                        1) «Just for fun»
                                        2) Как я понимаю, за столько лет разработчики слишком сроднились с проектом. Для них это как вырастить ребёнка уже. Даже учитывая, что это не коммерческий проект, им всё равно тяжело бросить его, так как немало сил вложено.

                          Only users with full accounts can post comments. Log in, please.