Требуется помощь от знатоков Linux
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Требуется помощь от знатоков Linux
вопрос у меня очень простой, но правильно сформулировать его я не могу, чтобы гуру линуха отвечали мне на профильных форумах.
неправильно вопрос формулируется так: ОС поддерживает разные локали (языки), причем их количество может быть различным, как и сами поддерживаемые локали. в API винды есть функция, которой передаешь номер поддерживаемой локали (0 - локаль по умолчанию, а потом просто номера локалей, т.е. для русской локали 0 будет 'RU' и где-то, допустим, 27 тоже будет 'RU'). кроме идентификатора названия локали ('RU', 'EN', 'GB' и т.п.) эта функция может возвращать и "кодировку" или "кодовую страницу" указанной локали, например, для 'RU' возвращает '1251'.
то есть в винде я тупо в цикле передаю этой функции числа от 1 до 400 (с запасом), и полчаю соответствующие строчки наименований локалей или кодовых страниц, если локали кончились, функция возвращает NULL - значит, цикл пора прервать. так я составляю список всех кратких названий локалей с соответствующими кодовыми страницами, котоые поддерживает OS MSWindows. Может, это и не совсем оптимально, но работает.
так вот, очень интересуюсь: каким образом получить такую же информацию в Linux? текущую локаль можно узнать из переменной окружения LANG, но интересует не текущая, а любая поддерживаемая ОС, а так же соответствующая кодировка символов для любой поддерживаемой локали.
неправильно вопрос формулируется так: ОС поддерживает разные локали (языки), причем их количество может быть различным, как и сами поддерживаемые локали. в API винды есть функция, которой передаешь номер поддерживаемой локали (0 - локаль по умолчанию, а потом просто номера локалей, т.е. для русской локали 0 будет 'RU' и где-то, допустим, 27 тоже будет 'RU'). кроме идентификатора названия локали ('RU', 'EN', 'GB' и т.п.) эта функция может возвращать и "кодировку" или "кодовую страницу" указанной локали, например, для 'RU' возвращает '1251'.
то есть в винде я тупо в цикле передаю этой функции числа от 1 до 400 (с запасом), и полчаю соответствующие строчки наименований локалей или кодовых страниц, если локали кончились, функция возвращает NULL - значит, цикл пора прервать. так я составляю список всех кратких названий локалей с соответствующими кодовыми страницами, котоые поддерживает OS MSWindows. Может, это и не совсем оптимально, но работает.
так вот, очень интересуюсь: каким образом получить такую же информацию в Linux? текущую локаль можно узнать из переменной окружения LANG, но интересует не текущая, а любая поддерживаемая ОС, а так же соответствующая кодировка символов для любой поддерживаемой локали.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
cat /etc/locale.gen
Но это редко бывает, чтобы пользователь выбрал недефолтную локаль. Обычно народ как-то хрюникодом довольствуется.
Вот у меня по умолчанию КОИ8-Р…
P.S. С такими названиями темы помощи вряд ли можно дождаться…
Но это редко бывает, чтобы пользователь выбрал недефолтную локаль. Обычно народ как-то хрюникодом довольствуется.
Вот у меня по умолчанию КОИ8-Р…
P.S. С такими названиями темы помощи вряд ли можно дождаться…
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
не выходит каменный цветок... нашел в /etc/ файл locale.alias... Linux Mint на виртуалке.
это что ж выходит: системной функции нет, а файлы в разных версиях OS могут называться по-разному?! и как тогда писать программы под это все?
это что ж выходит: системной функции нет, а файлы в разных версиях OS могут называться по-разному?! и как тогда писать программы под это все?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Требуется помощь от знатоков Linux
В линуксе много чего делается через файлы или их эмуляции.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
да я не против, делайется - так делается. но если названия файлов произвольно меняются от версии к версии - это просто кошмар какой-то! написал программу, которая о языках узнает из одной папке, у пользователя другая версия OS - все, сливай масло, программа работать не будет? по-моему, это хня какая-то...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
Re: Требуется помощь от знатоков Linux
Нет, это линукс!ARV писал(а):это хня какая-то...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
печально...
а я еще хотел воспользоваться возможностью кроссплатформенной разработки и сделать порт своих программ на линух... пожалуй, откажусь от этой идеи.
а я еще хотел воспользоваться возможностью кроссплатформенной разработки и сделать порт своих программ на линух... пожалуй, откажусь от этой идеи.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
А вот нечего вместо линукса говно какое-то ставить! Если вместо инита systemd, можно смело закапывать!
Сравнивать Линукс с бубунтой - как мастдайку с досом!!! Совершенно разные же вещи!
P.s. нет никакого смысла узнавать, какие локали в системе поддерживаются. Нужно лишь знать локаль пользователя. И если правильно пользоваться gettextом, никаких проблем не будет!!!
Сравнивать Линукс с бубунтой - как мастдайку с досом!!! Совершенно разные же вещи!
P.s. нет никакого смысла узнавать, какие локали в системе поддерживаются. Нужно лишь знать локаль пользователя. И если правильно пользоваться gettextом, никаких проблем не будет!!!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
знаете, когда кто-то решает за другого, есть смысл что-то делать или нет, мы и получаем ситуацию, когда даже апологеты одного семейства OS считают одну её разновидность must die, а другую must have. возможности должны быть предоставлены, а уж пользоваться ими или нет, каждый решит сам.Eddy_Em писал(а):нет никакого смысла узнавать, какие локали в системе поддерживаются
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
ARV, можно четко сформулировать задачу?
Я стопудово уверен, что после мастдайки у вас сформировалось несколько искаженное восприятие…
Дело в том, что если у пользователя установлена локаль А, то нет смысла выдавать ему текст в локали Б — он увидит "крякозябры". Вот файлы сохранять можно в любой локали, для этого есть библиотека enca.
Если имеете дело с хрюникодом, не забывайте, что в utf8 полным-полно запрещенных последовательностей и всяких косяков. Поэтому крайне рекомендую этим дерьмом не пользоваться, а если нужен хрюникод, то ставить utf32, где все однозначно.
Я стопудово уверен, что после мастдайки у вас сформировалось несколько искаженное восприятие…
Дело в том, что если у пользователя установлена локаль А, то нет смысла выдавать ему текст в локали Б — он увидит "крякозябры". Вот файлы сохранять можно в любой локали, для этого есть библиотека enca.
Если имеете дело с хрюникодом, не забывайте, что в utf8 полным-полно запрещенных последовательностей и всяких косяков. Поэтому крайне рекомендую этим дерьмом не пользоваться, а если нужен хрюникод, то ставить utf32, где все однозначно.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
я не знаю, как еще сформулировать задачу четче.
я сделал приложение под винду, в котором есть возможность переключать язык интерфейса программы прямо из программы. все составные части моей программы сделаны "межплатформенными", кроме этого переключения. я хотел доработать эту часть, чтобы портировать программу под линух.
да, моя программа использует в базе utf8, и вряд ли возможно с этим что-то сделать, т.к. вся система разработки заточена именно на этот формат
я сделал приложение под винду, в котором есть возможность переключать язык интерфейса программы прямо из программы. все составные части моей программы сделаны "межплатформенными", кроме этого переключения. я хотел доработать эту часть, чтобы портировать программу под линух.
да, моя программа использует в базе utf8, и вряд ли возможно с этим что-то сделать, т.к. вся система разработки заточена именно на этот формат
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
Ну так если приложение графическое, то при чем здесь локаль пользователя? Локаль влияет лишь на терминал и имена файлов, а в иксовых приложениях все в юникоде.
Для смены языка нужно всего лишь поменять переменные LC_MESSAGES и LANG, чтобы gettext автоматом выбрал другой перевод из своей базы (если он, конечно, есть).
В общем, текущая локаль пользователя в данном случае не имеет никакого значения (если вы хотите насильно в обход нее сменить язык).
Вот только обычно пользователь не просто так себе локаль назначает. Если у меня локаль ru_RU.koi8r, это означает, что я ожидаю увидеть либо текст по-английски, либо по-русски. Но не на турецком или китайском!
Короче: я не вижу в ваших действиях вообще никакого смысла!!!
Для смены языка нужно всего лишь поменять переменные LC_MESSAGES и LANG, чтобы gettext автоматом выбрал другой перевод из своей базы (если он, конечно, есть).
В общем, текущая локаль пользователя в данном случае не имеет никакого значения (если вы хотите насильно в обход нее сменить язык).
Вот только обычно пользователь не просто так себе локаль назначает. Если у меня локаль ru_RU.koi8r, это означает, что я ожидаю увидеть либо текст по-английски, либо по-русски. Но не на турецком или китайском!
Короче: я не вижу в ваших действиях вообще никакого смысла!!!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
если вы не видите смысла, это не означает, что его нет.
знать локаль пользователя мне не нужно (хотя нужно, но не в этом случае). мне нужно предоставить пользователю список "человекочитаемых" названий языков, которые поддерживает моя программа. причем названия этих языков должны быть такими, как их понимает OS, т.е. взяты они должны быть из OS, потому как если OS не поддерживает кодировку какого-то языка, то и моей программе нет смысла предлагать юзеру этот язык включить.
поскольку вывод текста в элементы стандартного интерфейса в винде делаются только функциями самой винды, винда знает, какие языки она может поддержать, и я могу у нее эти языки тоже запростить. мне надо сделать аналог этого запроса в линухе.
знать локаль пользователя мне не нужно (хотя нужно, но не в этом случае). мне нужно предоставить пользователю список "человекочитаемых" названий языков, которые поддерживает моя программа. причем названия этих языков должны быть такими, как их понимает OS, т.е. взяты они должны быть из OS, потому как если OS не поддерживает кодировку какого-то языка, то и моей программе нет смысла предлагать юзеру этот язык включить.
поскольку вывод текста в элементы стандартного интерфейса в винде делаются только функциями самой винды, винда знает, какие языки она может поддержать, и я могу у нее эти языки тоже запростить. мне надо сделать аналог этого запроса в линухе.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
ARV, линукс - не мастдайка!
Нет абсолютно никакого смысла выдумывать какую-то чушь!
Если у вас есть в gettext перевод на заданный язык, он автоматом по настройке локали пользователя всплывет. Если нет - будет дефолт (английский).
Кодировка здесь абсолютно лесом, т.к. внутри иксов все в utf8!
В общем, не надо пагубные мастдайские привычки в линукс тащить! И не надо юзеру "предлагать" какие-то языки в обход его локали. Если он захочет другой язык, просто соответствующие переменные locale изменит.
Понятно теперь, почему на профильных форумах вам не могли ответить: потому что вопрос поставлен в корне неверно. Почитайте на SO, например, как правильно вопрос задавать.
Нет абсолютно никакого смысла выдумывать какую-то чушь!
Если у вас есть в gettext перевод на заданный язык, он автоматом по настройке локали пользователя всплывет. Если нет - будет дефолт (английский).
Кодировка здесь абсолютно лесом, т.к. внутри иксов все в utf8!
В общем, не надо пагубные мастдайские привычки в линукс тащить! И не надо юзеру "предлагать" какие-то языки в обход его локали. Если он захочет другой язык, просто соответствующие переменные locale изменит.
Понятно теперь, почему на профильных форумах вам не могли ответить: потому что вопрос поставлен в корне неверно. Почитайте на SO, например, как правильно вопрос задавать.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
все пользователиадепты линукса всегда уверены, что другие люди либо могут страстно желать стать адептом линукса, либо должны проходить мимо, потупив взгляд. просто интересоваться событиями в их стане категорически запрещено. это грустно.
я не могу задавать вопросы иначе, чем могу: мне нужно реализовать аналог определенных действий в винде - это наиболее корректная постановка вопроса. все прочее - шелуха: надо оно или нет, вредная это привычка или нет - не важно.
я даже не предтавляю себе, как, например, разработчик интерфейса может в линуксе сделать предварительный просмотр своей работы, как если бы его использовал китаец ил индус? ведь для этого надо изменить локаль приложения, не меняя локали всего прочего! неужели это невозможно?! не верю.
я не могу задавать вопросы иначе, чем могу: мне нужно реализовать аналог определенных действий в винде - это наиболее корректная постановка вопроса. все прочее - шелуха: надо оно или нет, вредная это привычка или нет - не важно.
я даже не предтавляю себе, как, например, разработчик интерфейса может в линуксе сделать предварительный просмотр своей работы, как если бы его использовал китаец ил индус? ведь для этого надо изменить локаль приложения, не меняя локали всего прочего! неужели это невозможно?! не верю.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
ARV, это в мастдайке невозможно. А в линуксе просто меняете нужные переменные локали, запускаете обновление интерфейса и у вас gettext автоматом меняет перевод. Кстати, в Qt есть кроссплатформенные утилиты для этих вещей. Сам я точно сказать не могу, т.к. презираю GUI и пишу исключительно CLI-утилиты (ну, а если вдруг мне нужен GUI, делаю веб-морду).
Вот в консоли так делать нельзя: там локаль та, которую выбрал пользователь, и смена локали приложения ни к чему хорошему не приведет.
P.S. Кажется, в qt-designer есть возможность просмотра интерфейса с выбранными LANG, чтобы посмотреть, как будут переводы выглядеть на разных языках и не будет ли интерфейс от этого коробить. Но, опять же, интересуйтесь у кутешников. Я не то, что культяпки не люблю, у меня к самому С++ крайне негативное отношение.
Вот в консоли так делать нельзя: там локаль та, которую выбрал пользователь, и смена локали приложения ни к чему хорошему не приведет.
P.S. Кажется, в qt-designer есть возможность просмотра интерфейса с выбранными LANG, чтобы посмотреть, как будут переводы выглядеть на разных языках и не будет ли интерфейс от этого коробить. Но, опять же, интересуйтесь у кутешников. Я не то, что культяпки не люблю, у меня к самому С++ крайне негативное отношение.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
как же невозможно, если я это УЖЕ сделал? а вот повторить подоное в линуксе не знаю как.Eddy_Em писал(а):это в мастдайке невозможно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
Я уже сказал, как повторить: просто поменять нужные переменные и обновить интерфейс!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18552
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Требуется помощь от знатоков Linux
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3762518#p3762518"]Я уже сказал, как повторить: просто поменять нужные переменные и обновить интерфейс![/uquote]
вы отвечаете на свой вопрос, а вы ответьте на мой: как узнать список тех локалей, которые поддерживаются (установлены?) в OS? интерфейс рисовать будет же OS, и если я установлю кыргызскую локаль, а её всистеме нет, то будет английская? мне надо не дать установить кыргызскую, если её в системе нет.
вы отвечаете на свой вопрос, а вы ответьте на мой: как узнать список тех локалей, которые поддерживаются (установлены?) в OS? интерфейс рисовать будет же OS, и если я установлю кыргызскую локаль, а её всистеме нет, то будет английская? мне надо не дать установить кыргызскую, если её в системе нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Требуется помощь от знатоков Linux
ARV, это не нужно. Поддерживается все, что поддерживается в utf8!
Единственное ограничение - какие переводы у вас есть под gettext.
Единственное ограничение - какие переводы у вас есть под gettext.


