Skip to content

Commit

Permalink
Merge pull request #2576 from unxed/osc52prompt_ru
Browse files Browse the repository at this point in the history
auto select Russian language if system locale is ru_RU on first start
elfmz authored Dec 22, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
2 parents 43d165a + c46dbfe commit 5cb7828
Showing 4 changed files with 40 additions and 26 deletions.
5 changes: 0 additions & 5 deletions WinPort/src/APIStringCodepages.cpp
Original file line number Diff line number Diff line change
@@ -133,11 +133,6 @@ template <class BYTES_TYPE, bool BYTEREV>
return TranscodeUTF(flags, (const BYTES_TYPE *)src, srclen, dst, dstlen);
}


#define IsLocaleMatches(current, wanted_literal) \
( strncmp((current), wanted_literal, sizeof(wanted_literal) - 1) == 0 && \
( (current)[sizeof(wanted_literal) - 1] == 0 || (current)[sizeof(wanted_literal) - 1] == '.') )

struct Codepages
{
int oem;
11 changes: 11 additions & 0 deletions far2l/bootstrap/scripts/farlang.templ.m4
Original file line number Diff line number Diff line change
@@ -27016,6 +27016,17 @@ upd:"Context (&lines):"
"&Контекст (рядків):"
"&Кантэкст (радкоў):"

OSC52Confirm
"Использовать OSC52 для установки данных буфера обмена (вопрос при первом запуске)\n\nOSC52 позволяет копировать из far2l, работающего в TTY-режиме\n(даже через подключение по SSH), в буфер обмена вашей локальной системы.\n(Если вы используете far2l на удалённой небезопасной системе, предоставление\nей доступа на запись в ваш буфер обмена может быть потенциально небезопасным).\n\nНекоторым терминалам также требуется включение OSC52 в их настройках.\n\nВы можете в любой момент включать/выключать OSC52\nв Меню(F9)->Параметры->Настройки интерфейса.\n\nРазрешить far2l использовать OSC52 для работы с буфером обмена?\n"
"Use OSC52 to set clipboard data (question at first start)\n\nOSC52 allows copying from far2l running\nin TTY mode (even via SSH connection) to your local system clipboard\n(if you are using far2l on a remote untrusted system, giving remote\nsystem write access to your clipboard may be potentially unsafe).\n\nSome terminals also need OSC52 to be enabled in terminal's settings.\n\nYou can toggle use of OSC52 on/off at any time\nin Menu(F9)->Options->Interface settings.\n\nAllow far2l to set clipboard data using OSC52?\n"
upd:"Use OSC52 to set clipboard data (question at first start)\n\nOSC52 allows copying from far2l running\nin TTY mode (even via SSH connection) to your local system clipboard\n(if you are using far2l on a remote untrusted system, giving remote\nsystem write access to your clipboard may be potentially unsafe).\n\nSome terminals also need OSC52 to be enabled in terminal's settings.\n\nYou can toggle use of OSC52 on/off at any time\nin Menu(F9)->Options->Interface settings.\n\nAllow far2l to set clipboard data using OSC52?\n"
upd:"Use OSC52 to set clipboard data (question at first start)\n\nOSC52 allows copying from far2l running\nin TTY mode (even via SSH connection) to your local system clipboard\n(if you are using far2l on a remote untrusted system, giving remote\nsystem write access to your clipboard may be potentially unsafe).\n\nSome terminals also need OSC52 to be enabled in terminal's settings.\n\nYou can toggle use of OSC52 on/off at any time\nin Menu(F9)->Options->Interface settings.\n\nAllow far2l to set clipboard data using OSC52?\n"
upd:"Use OSC52 to set clipboard data (question at first start)\n\nOSC52 allows copying from far2l running\nin TTY mode (even via SSH connection) to your local system clipboard\n(if you are using far2l on a remote untrusted system, giving remote\nsystem write access to your clipboard may be potentially unsafe).\n\nSome terminals also need OSC52 to be enabled in terminal's settings.\n\nYou can toggle use of OSC52 on/off at any time\nin Menu(F9)->Options->Interface settings.\n\nAllow far2l to set clipboard data using OSC52?\n"
upd:"Use OSC52 to set clipboard data (question at first start)\n\nOSC52 allows copying from far2l running\nin TTY mode (even via SSH connection) to your local system clipboard\n(if you are using far2l on a remote untrusted system, giving remote\nsystem write access to your clipboard may be potentially unsafe).\n\nSome terminals also need OSC52 to be enabled in terminal's settings.\n\nYou can toggle use of OSC52 on/off at any time\nin Menu(F9)->Options->Interface settings.\n\nAllow far2l to set clipboard data using OSC52?\n"
upd:"Use OSC52 to set clipboard data (question at first start)\n\nOSC52 allows copying from far2l running\nin TTY mode (even via SSH connection) to your local system clipboard\n(if you are using far2l on a remote untrusted system, giving remote\nsystem write access to your clipboard may be potentially unsafe).\n\nSome terminals also need OSC52 to be enabled in terminal's settings.\n\nYou can toggle use of OSC52 on/off at any time\nin Menu(F9)->Options->Interface settings.\n\nAllow far2l to set clipboard data using OSC52?\n"
"Використовувати OSC52 для встановлення даних буфера обміну (запит при першому запуску)\n\nOSC52 дозволяє копіювати з far2l, що працює в режимі TTY\n(навіть через підключення по SSH), до буфера обміну вашої локальної системи.\n(Якщо ви використовуєте far2l на віддаленій небезпечній системі, надання\nдоступу до запису в буфер обміну може бути потенційно небезпечним).\n\nДеяким терміналам також потрібно ввімкнення OSC52 у налаштуваннях терміналу.\n\nВи можете в будь-який момент вмикати/вимикати OSC52\nу Меню(F9)->Параметри->Налаштування інтерфейсу.\n\nДозволити far2l використовувати OSC52 для роботи з буфером обміну?\n"
"Выкарыстоўваць OSC52 для ўстаноўкі даных буфера абмену (пытанне пры першым запуску)\n\nOSC52 дазваляе капіяваць з far2l, які працуе ў TTY-рэжыме\n(нават праз падключэнне па SSH), у буфер абмену вашай лакальнай сістэмы.\n(Калі вы выкарыстоўваеце far2l на аддаленай ненадзейнай сістэме, прадастаўленне\nдоступу да запісу ў ваш буфер абмену можа быць патэнцыйна небяспечным).\n\nНекаторым тэрміналам таксама трэба ўключыць OSC52 у іх наладках.\n\nВы можаце ў любы момант уключаць/выключаць OSC52\nу Меню(F9)->Параметры->Налады інтэрфейсу.\n\nДазволіць far2l выкарыстоўваць OSC52 для працы з буферам абмену?\n"

#Must be the last
NewFileName
l:
39 changes: 21 additions & 18 deletions far2l/src/main.cpp
Original file line number Diff line number Diff line change
@@ -305,30 +305,33 @@ static int MainProcess(FARString strEditViewArg, FARString strDestName1, FARStri

fprintf(stderr, "STARTUP: %llu\n", (unsigned long long)(clock() - cl_start));


if( Opt.IsFirstStart ) {

const char *locale = setlocale(LC_CTYPE, NULL);
// Only Russian translation can be currently considered complete
if (IsLocaleMatches(locale, "ru_RU")) {
Opt.strLanguage = L"Russian";
Opt.strHelpLanguage = L"Russian";
ConfigOptSave(false);
}

Help::Present(L"Far2lGettingStarted",L"",FHELP_NOSHOWERROR);

DWORD tweaks = WINPORT(SetConsoleTweaks)(TWEAKS_ONLY_QUERY_SUPPORTED);
if (tweaks & TWEAK_STATUS_SUPPORT_OSC52CLIP_SET) {
SetMessageHelp(L"Far2lGettingStarted");
if (Message(0, 2, // at 1st start always only English and we not need use Msg here
L"Use OSC52 to set clipboard data (question at first start)",
L"",
L"OSC52 allows copying from far2l running",
L"in TTY mode (even via SSH connection) to your local system clipboard",
L"(if you are using far2l on a remote untrusted system, giving remote",
L"system write access to your clipboard may be potentially unsafe).",
L"",
L"Some terminals also need OSC52 to be enabled in terminal's settings.",
L"",
L"You can toggle use of OSC52 on/off at any time",
L"in Menu(F9)->\'Options\"->\"Interface settings\".",
L"",
L"Allow far2l to set clipboard data using OSC52?",
Msg::Yes,
Msg::No))
{

std::wstring source_str = Msg::OSC52Confirm.CPtr();
std::vector<std::wstring> lines;
ExMessager em;
StrExplode(lines, source_str, L"\n", false);
for (const auto &current_line : lines) {
em.AddDup(current_line.c_str());
}
em.AddDup(L"Yes");
em.AddDup(L"No");

if (em.Show(0, 2)) {
Opt.OSC52ClipSet = 0;
} else {
Opt.OSC52ClipSet = 1;
11 changes: 8 additions & 3 deletions utils/include/utils.h
Original file line number Diff line number Diff line change
@@ -17,6 +17,10 @@
#include "CharArray.hpp"
#include "CharClasses.h"

#define IsLocaleMatches(current, wanted_literal) \
( strncmp((current), wanted_literal, sizeof(wanted_literal) - 1) == 0 && \
( (current)[sizeof(wanted_literal) - 1] == 0 || (current)[sizeof(wanted_literal) - 1] == '.') )

#define MAKE_STR(x) _MAKE_STR(x)
#define _MAKE_STR(x) #x

@@ -205,16 +209,17 @@ template <class CharT>


template <class CharT>
void StrExplode(std::vector<std::basic_string<CharT> > &out, const std::basic_string<CharT> &str, const CharT *divs)
void StrExplode(std::vector<std::basic_string<CharT> > &out, const std::basic_string<CharT> &str, const CharT *divs, bool skipEmpty = true)
{
for (size_t i = 0, j = 0; i <= str.size(); ++i) {
const CharT *d = divs;
if (i != str.size()) {
for (; *d && *d != str[i]; ++d);
}
if (*d) {
if (i > j) {
out.emplace_back(str.substr(j, i - j));
size_t len = i - j;
if (len > 0 || !skipEmpty) { // Check for empty string and skipEmpty flag
out.emplace_back(str.substr(j, len));
}
j = i + 1;
}

0 comments on commit 5cb7828

Please sign in to comment.