mate-desktop / libmatekbd

Keyboard management library
https://mate-desktop.org
GNU Lesser General Public License v2.1
17 stars 11 forks source link

It is not possible to assign keyboard shortcuts to switch keyboard layouts when using the Ukrainian interface language #55

Open bmivzkrp opened 5 years ago

bmivzkrp commented 5 years ago

Expected behaviour

A user using the Ukrainian interface language can assign a keyboard shortcut to switch between keyboard layouts.

Actual behaviour

After pressing the Options ... button, the settings utility closes and the focus hits the desktop.

Steps to reproduce the behaviour

Environment: Ukrainian interface language; Assistive technologies are enabled because the Orca screen reader is used.

Steps to reproduce:

  1. Press the ALT + F1 key combination to enter the main menu;

  2. Submenu System (Система);

  3. Submenu Preferences (Параметри);

  4. Submenu Hardware (Обладнання). In MATE from branch 1.22, this menu item is translated into Ukrainian otherwise: Апаратне забезпечення;

  5. Activate the item Keyboard (Набірниця);

  6. Select a tab Layouts (Розкладки);

  7. Press the button Options... (Параметри...).

When you click this button, the keyboard setup utility closes and the focus falls onto the desktop. As a result, the user can not configure the keyboard shortcuts to switch between keyboard layouts.

MATE general version

1.22.2

This problem is also relevant for all MATE versions from branch 1.20.

Package version

1.22.0

Linux Distribution

Ubuntu (18.04 and later, including 19.10). Fedora (30, 31).

Link to downstream report of your Distribution

https://bugs.launchpad.net/ubuntu-mate/+bug/1813758

Many thanks for fixing this issue. Sorry for my bad English.

DidierSpaier commented 4 years ago

Please describe the issue directly here to make easier to process it by Mate developers.

This being said, I confirm it using another distribution (Slint64-14.2.1, Mate 1.22)

EDIT: the author edited the first post of this thread after this comment, which thus appears out of sequence.

bmivzkrp commented 4 years ago

Thanks. I tried to create a description of the problem here. If I make any mistakes, please point me to them. I also want to point out that this problem has been around for a very long time. I first encountered this problem three or four years ago.

raveit65 commented 4 years ago

@DidierSpaier

Please describe the issue directly here to make easier to process it by Mate developers.

We ask for for a downstream report in our template for reports to be sure that it isn't a distro issue and that downstream maintainer is involved and can re-check that it isn't caused by distro. Sorry, for that, but we are a small team and our spare time is limited. ...we doesn't have ubuntu resources.

Thank you.

bmivzkrp commented 4 years ago

@raveit65

We ask for for a downstream report in our template for reports to be sure that it isn't a distro issue and that downstream maintainer is involved and can re-check that it isn't caused by distro.

I would very much ask you to take a look at this problem as it has been reproduced for a very long time on all distros which include accessibility support.

DidierSpaier commented 4 years ago

I reply to raveit65:

@DidierSpaier

Please describe the issue directly here to make easier to process it by Mate developers.

We ask for for a downstream report in our template for reports to be sure that it isn't a distro issue and that downstream maintainer is involved and can re-check that it isn't caused by distro. Sorry, for that, but we are a small team and our spare time is limited. ...we doesn't have ubuntu resources.

Thank you.

I realize that, that's why I suggested to the authot to describe it in full here. Do you still miss information after that? At least I was able to reproduce this issue following the steps he described.

DidierSpaier commented 4 years ago

Quoting bmivzkrp:

I would very much ask you to take a look at this problem as it has been reproduced for a very long time

If this problem was not reported until today (or not in the right place), no wonder that it be still not solved...

bmivzkrp commented 4 years ago

@DidierSpaier

If this problem was not reported until today (or not in the right place), no wonder that it be still not solved...

I suspect this is a communication problem. Many users do not know English at all ...

bmivzkrp commented 4 years ago

I built LibMATEKBD from the source code. This problem also exists in the Master branch. Also, users who updated MATE to 1.24 confirm that the problem still exists.

bmivzkrp commented 4 years ago

Just checked. The problem is also relevant for Ubuntu 20.04.

rbuj commented 4 years ago

The problem is related with the translation of xkeyboard-config into Ukrainian. You can delete the file to avoid SEGFAULT:

$ sudo rm /usr/share/locale/uk/LC_MESSAGES/xkeyboard-config.mo

mate-keyboard-properties backtrace

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007ffff67b9895 in __GI_abort () at abort.c:79
#2  0x00007ffff7b91b32 in _dbus_abort () at ../../dbus/dbus-sysdeps.c:93
#3  0x00007ffff7bb5310 in _dbus_warn_check_failed (format=format@entry=0x7ffff7bc5da8 "arguments to %s() were incorrect, assertion \"%s\" failed in file %s line %d.\nThis is normally a bug in some application using the D-Bus library.\n") at ../../dbus/dbus-internals.c:281
#4  0x00007ffff7bb5a7e in _dbus_warn_return_if_fail (function=function@entry=0x7ffff7bc46d0 <__func__.37> "dbus_message_iter_append_basic", assertion=assertion@entry=0x7ffff7bc3bd0 "_dbus_check_is_valid_utf8 (*string_p)", file=file@entry=0x7ffff7bc331a "../../dbus/dbus-message.c", line=line@entry=2754) at ../../dbus/dbus-internals.c:936
#5  0x00007ffff7ba5fb7 in dbus_message_iter_append_basic (iter=iter@entry=0x7fffffffc3d0, type=type@entry=115, value=value@entry=0x7fffffffc3c0) at ../../dbus/dbus-message.c:2754
#6  0x00007ffff65b1b5b in append_cache_item (obj=obj@entry=0xe3b0a0 [GtkRadioButtonAccessible], data=data@entry=0x7fffffffc4c0) at ../atk-adaptor/adaptors/cache-adaptor.c:206
#7  0x00007ffff65b1f06 in emit_cache_add (cache=<optimized out>, obj=<optimized out>) at ../atk-adaptor/adaptors/cache-adaptor.c:293
#11 0x00007ffff6c3fc43 in <emit signal ??? on instance 0xa7c800 [SpiCache]> (instance=instance@entry=0xa7c800, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
    #8  0x00007ffff6c2688a in g_closure_invoke (closure=0xb9c4a0, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffc6c0, invocation_hint=invocation_hint@entry=0x7fffffffc640) at ../gobject/gclosure.c:810
    #9  0x00007ffff6c39463 in signal_emit_unlocked_R (node=node@entry=0xa54000, detail=detail@entry=0, instance=instance@entry=0xa7c800, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc6c0) at ../gobject/gsignal.c:3742
    #10 0x00007ffff6c3fad9 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffc860) at ../gobject/gsignal.c:3498
#12 0x00007ffff65a83cf in add_object (gobj=0xe3b0a0 [GtkRadioButtonAccessible], cache=0xa7c800 [SpiCache]) at ../atk-adaptor/accessible-cache.c:190
#13 add_pending_items (data=data@entry=0xa7c800) at ../atk-adaptor/accessible-cache.c:307
#14 0x00007ffff6b3649b in g_idle_dispatch (source=source@entry=0xcae180, callback=0x7ffff65a8270 <add_pending_items>, user_data=0xa7c800) at ../glib/gmain.c:5755
#15 0x00007ffff6b3a7cf in g_main_dispatch (context=0x45a810) at ../glib/gmain.c:3309
#16 g_main_context_dispatch (context=0x45a810) at ../glib/gmain.c:3974
#17 0x00007ffff6b3ab58 in g_main_context_iterate (context=0x45a810, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4047
#18 0x00007ffff6b3ae73 in g_main_loop_run (loop=0xd24600) at ../glib/gmain.c:4241
#19 0x00007ffff753b777 in gtk_dialog_run (dialog=0xbc1f20 [GtkDialog]) at gtkdialog.c:1398
#20 0x000000000040d8ea in xkb_options_popup_dialog (dialog=0x491d70 [GtkBuilder]) at mate-keyboard-properties-xkbot.c:464
#21 0x00007ffff6c26ae6 in _g_closure_invoke_va (closure=closure@entry=0x565640, return_value=return_value@entry=0x0, instance=instance@entry=0x7ac180, args=args@entry=0x7fffffffcd60, n_params=0, param_types=0x0) at ../gobject/gclosure.c:873
#22 0x00007ffff6c3f6c9 in g_signal_emit_valist (instance=0x7ac180, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffcd60) at ../gobject/gsignal.c:3407
#23 0x00007ffff6c3fc43 in g_signal_emit (instance=instance@entry=0x7ac180, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#24 0x00007ffff74c2892 in gtk_button_clicked (button=button@entry=0x7ac180 [GtkButton]) at gtkbutton.c:1541
#25 0x00007ffff74c2a20 in gtk_button_do_release (emit_clicked=1, button=0x7ac180 [GtkButton]) at gtkbutton.c:1845
#26 gtk_button_do_release (emit_clicked=1, button=0x7ac180 [GtkButton]) at gtkbutton.c:1832
#27 gtk_real_button_released (button=0x7ac180 [GtkButton]) at gtkbutton.c:1963
#28 0x00007ffff6c26ae6 in _g_closure_invoke_va (closure=closure@entry=0x4f9690, return_value=return_value@entry=0x0, instance=instance@entry=0x7ac180, args=args@entry=0x7fffffffd080, n_params=0, param_types=0x0) at ../gobject/gclosure.c:873
#29 0x00007ffff6c3f6c9 in g_signal_emit_valist (instance=0x7ac180, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd080) at ../gobject/gsignal.c:3407
#30 0x00007ffff6c3fc43 in g_signal_emit (instance=instance@entry=0x7ac180, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#31 0x00007ffff74c0c44 in multipress_released_cb (gesture=0x7d6380 [GtkGestureMultiPress], n_press=<optimized out>, x=<optimized out>, y=<optimized out>, widget=0x7ac180 [GtkButton]) at gtkbutton.c:666
#32 0x00007ffff778834f in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x57c240) at gtkmarshalers.c:4803
#33 0x00007ffff6c26ae6 in _g_closure_invoke_va (closure=closure@entry=0x4d93c0, return_value=return_value@entry=0x0, instance=instance@entry=0x7d6380, args=args@entry=0x7fffffffd3a0, n_params=3, param_types=0x57c240) at ../gobject/gclosure.c:873
#34 0x00007ffff6c3f6c9 in g_signal_emit_valist (instance=0x7d6380, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd3a0) at ../gobject/gsignal.c:3407
#35 0x00007ffff6c3fc43 in g_signal_emit (instance=instance@entry=0x7d6380, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#36 0x00007ffff758fddc in gtk_gesture_multi_press_end (gesture=gesture@entry=0x7d6380 [GtkGestureMultiPress], sequence=sequence@entry=0x0) at gtkgesturemultipress.c:287
#37 0x00007ffff6c29c84 in g_cclosure_marshal_VOID__BOXEDv (closure=0x5e5cb0, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x54f330) at ../gobject/gmarshal.c:1686
#38 0x00007ffff6c26ae6 in _g_closure_invoke_va (closure=closure@entry=0x5e5cb0, return_value=return_value@entry=0x0, instance=instance@entry=0x7d6380, args=args@entry=0x7fffffffd720, n_params=1, param_types=0x54f330) at ../gobject/gclosure.c:873
#39 0x00007ffff6c3f6c9 in g_signal_emit_valist (instance=0x7d6380, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd720) at ../gobject/gsignal.c:3407
#40 0x00007ffff6c3fc43 in g_signal_emit (instance=instance@entry=0x7d6380, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#41 0x00007ffff758cdd7 in _gtk_gesture_set_recognized (sequence=0x0, recognized=0, gesture=0x7d6380 [GtkGestureMultiPress]) at gtkgesture.c:346
#42 _gtk_gesture_check_recognized (gesture=gesture@entry=0x7d6380 [GtkGestureMultiPress], sequence=sequence@entry=0x0) at gtkgesture.c:387
#43 0x00007ffff758e4d3 in gtk_gesture_handle_event (event=0xaf1aa0, controller=0x7d6380 [GtkGestureMultiPress]) at gtkgesture.c:806
#44 gtk_gesture_handle_event (controller=0x7d6380 [GtkGestureMultiPress], event=0xaf1aa0) at gtkgesture.c:713
#45 0x00007ffff7591613 in gtk_gesture_single_handle_event (controller=0x7d6380 [GtkGestureMultiPress], event=0xaf1aa0) at gtkgesturesingle.c:222
#46 0x00007ffff7557000 in gtk_event_controller_handle_event (controller=0x7d6380 [GtkGestureMultiPress], event=event@entry=0xaf1aa0) at gtkeventcontroller.c:230
#47 0x00007ffff7728e8d in _gtk_widget_run_controllers (widget=0x7ac180 [GtkButton], event=0xaf1aa0, phase=GTK_PHASE_BUBBLE) at gtkwidget.c:7443
#48 0x00007ffff7781e3c in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x467ff0, return_value=0x7fffffffdaa0, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x468020) at gtkmarshalers.c:129
#49 0x00007ffff6c26ae6 in _g_closure_invoke_va (closure=closure@entry=0x467ff0, return_value=return_value@entry=0x7fffffffdaa0, instance=instance@entry=0x7ac180, args=args@entry=0x7fffffffdb70, n_params=1, param_types=0x468020) at ../gobject/gclosure.c:873
#50 0x00007ffff6c3ee2b in g_signal_emit_valist (instance=0x7ac180, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffdb70) at ../gobject/gsignal.c:3407
#51 0x00007ffff6c3fc43 in g_signal_emit (instance=instance@entry=0x7ac180, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#52 0x00007ffff772af74 in gtk_widget_event_internal (widget=0x7ac180 [GtkButton], event=0xaf1aa0) at gtkwidget.c:7808
#53 0x00007ffff772d1e2 in gtk_widget_event_internal (event=<optimized out>, widget=<optimized out>) at gtkwidget.c:7687
#54 gtk_widget_event (widget=<optimized out>, event=<optimized out>) at gtkwidget.c:7378
#55 0x0000000000000000 in  ()

dbus-monitor AT-SPI2

$ xprop -root | grep SPI
AT_SPI_BUS(STRING) = "unix:abstract=0000f"
$ dbus-monitor --address unix:abstract=0000f
<cut>
signal time=1587257271.040166 sender=:1.28 -> destination=(null destination) serial=1029 path=/org/a11y/atspi/cache; interface=org.a11y.atspi.Cache; member=AddAccessible
   struct {
      struct {
         string ":1.28"
         object path "/org/a11y/atspi/accessible/245"
      }
      struct {
         string ":1.28"
         object path "/org/a11y/atspi/accessible/root"
      }
      struct {
         string ":1.28"
         object path "/org/a11y/atspi/accessible/195"
      }
      int32 1
      int32 0
      array [
         string "org.a11y.atspi.Accessible"
         string "org.a11y.atspi.Action"
         string "org.a11y.atspi.Component"
         string "org.a11y.atspi.Image"
         string "org.a11y.atspi.Collection"
      ]
      string "Звичайний пробіл на будь-якому рівні"
      uint32 44
      string ""
      array [
         uint32 1124075776
         uint32 0
      ]
   }
signal time=1587257271.040552 sender=:1.26 -> destination=(null destination) serial=1383 path=/org/a11y/atspi/accessible/142; interface=org.a11y.atspi.Event.Object; member=TextChanged
   string "delete"
   int32 48
   int32 5
   variant   string "

"
   array [
   ]
signal time=1587257271.040673 sender=:1.26 -> destination=(null destination) serial=1384 path=/org/a11y/atspi/accessible/142; interface=org.a11y.atspi.Event.Object; member=TextChanged
   string "insert"
   int32 48
   int32 308
   variant   string "dbus[2164]: arguments to dbus_message_iter_append_basic() were incorrect, assertion "_dbus_check_is_valid_utf8 (*string_p)" failed in file ../../dbus/dbus-message.c line 2754.
This is normally a bug in some application using the D-Bus library.

  D-Bus not built with -rdynamic so unable to print a backtrace"
   array [
   ]
<cut>
bmivzkrp commented 4 years ago

@rbuj: Thank you very much, it works. In my case (Ubuntu-MATE 20.04), the command was:

sudo rm /usr/share/locale-langpack/uk/LC_MESSAGES/xkeyboard-config.mo

yurchor commented 4 years ago

Hi,

I'm a maintainer of xkeyboard-config Ukrainian translation. Am I right that the problem is the dash (minus) in the translated string ("будь-якому")?

How can I change the translation to make it work? Would it be enough to replace the dash with another Unicode symbol?

Thanks in advance for your help.

bmivzkrp commented 4 years ago

Dear MATE Developers. Please resolve this issue. Otherwise, with similar translation defects, users will not be able to configure keyboard shortcuts to change the keyboard layout.

raveit65 commented 4 years ago

This is not in our hand. This needs to be fixed by translators at transifex first, for master and 1.24 branch. https://www.transifex.com/mate/MATE/translate/#uk/master--libmatekbd/137124235 Than we can do a pull from transifex with updated translations.

yurchor commented 4 years ago

This is not in our hand. This needs to be fixed by translators at transifex first, for master and 1.24 branch. https://www.transifex.com/mate/MATE/translate/#uk/master--libmatekbd/137124235 Than we can do a pull from transifex with updated translations.

Sorry, but reporters and triagers point that it is not libmatekbd translation issue. It was shown that the xkeyboard-config translation triggers the issue. It was privately confirmed that it crashes the configuration widget for the Russian locale as well.

raveit65 commented 4 years ago

ok ....

bmivzkrp commented 4 years ago

@raveit65: I just checked this situation using a translation file sent to me by @yurchor. Unfortunately, the situation has not improved. Yes, I confirm that deleting the Russian translation file eliminates the problem for Russian-speaking users.

rbuj commented 4 years ago

@yurchor I detected an issue with xkeyboard-config Ukrainian translation. There is a duplicated translation. "Угорська (102/QWERTZ/кома/сліпі клавіші)"

$ sort po/uk.po | uniq -c | grep -v '^ *1 '
   1180 
      2 #. Keyboard indicator for Arabic layouts
      2 #. Keyboard indicator for English layouts
      2 msgstr "Угорська (102/QWERTZ/кома/сліпі клавіші)"

The command line reports 4 Pango errors after expanding these groups (orca disabled):

$ LANG=uk_UA.UTF-8 mate-keyboard-properties 

(mate-keyboard-properties:24041): Pango-WARNING **: 00:47:00.365: Invalid UTF-8 string passed to pango_layout_set_text()

(mate-keyboard-properties:24041): Pango-WARNING **: 00:47:00.371: Invalid UTF-8 string passed to pango_layout_set_text()

(mate-keyboard-properties:24041): Pango-WARNING **: 00:47:00.371: Invalid UTF-8 string passed to pango_layout_set_text()

(mate-keyboard-properties:24041): Pango-WARNING **: 00:47:32.642: Invalid UTF-8 string passed to pango_layout_set_text()

Screenshot at 2020-04-20 00-49-06

Group options (radio buttons) are loaded from https://github.com/mate-desktop/mate-control-center/blob/caa7430542bac23ba0b13ed3325ad8b1732495f4/capplets/keyboard/mate-keyboard-properties-xkbot.c#L215

rbuj commented 4 years ago
diff --git a/po/uk.po b/po/uk.po
index 33cae58..f026ab9 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -13,7 +13,7 @@ msgstr ""
 "Project-Id-Version: xkeyboard-config-2.27.99\n"
 "Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
 "POT-Creation-Date: 2019-09-25 00:22+0100\n"
-"PO-Revision-Date: 2019-09-25 15:38+0300\n"
+"PO-Revision-Date: 2020-04-20 10:31+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
 "Language: uk\n"
@@ -21,8 +21,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\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: Lokalize 19.11.70\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: Poedit 2.3\n"

 #: rules/base.xml:8
 msgid "Generic 101-key PC"
@@ -2153,7 +2153,7 @@ msgstr "Угорська (QWERTY)"

 #: rules/base.xml:3711
 msgid "Hungarian (101/QWERTZ/comma/dead keys)"
-msgstr "Угорська (102/QWERTZ/кома/сліпі клавіші)"
+msgstr "Угорська (101/QWERTZ/кома/сліпі клавіші)"

 #: rules/base.xml:3717
 msgid "Hungarian (101/QWERTZ/comma/no dead keys)"
@@ -3805,7 +3805,7 @@ msgstr "Зворотна похила риска, одноразовий виб

 #: rules/base.xml:6640
 msgid "&lt;Less/Greater&gt;; acts as onetime lock when pressed together with another 3rd level chooser"
-msgstr "&lt;Менше/Більше&gt;, одноразовий вибір регістру, якщо натиснути разом зі іншою комбінацією вибору 3-го рівня"
+msgstr "&lt;Менше/Більше&gt;; одноразовий вибір регістру, якщо натиснути разом зі іншою комбінацією вибору 3-го рівня"

 #: rules/base.xml:6648
 msgid "Ctrl position"
@@ -3893,7 +3893,7 @@ msgstr "Клавіатура Wang 724 з доповненнями Unicode (ст

 #: rules/base.xml:6786
 msgid "Wang 724 keypad with Unicode additions (arrows and math operators; math operators on default level)"
-msgstr "Клавіатура Wang 724 з доповненнями Unicode (стрілки та математичні оператори). Математичні операції на типовому рівні"
+msgstr "Клавіатура Wang 724 з доповненнями Unicode (стрілки та математичні оператори; mатематичні операції на типовому рівні)"

 #: rules/base.xml:6792
 msgid "Hexadecimal"
@@ -3936,7 +3936,7 @@ msgstr "Клавіша четвертого рівня з momayyez"
 #. The description needs to be rewritten
 #: rules/base.xml:6852
 msgid "Four-level key with abstract separators"
-msgstr "Клавіша четвертого рівня з абстрактним розділювачем "
+msgstr "Клавіша четвертого рівня з абстрактним розділювачем"

 #: rules/base.xml:6858
 msgid "Semicolon on third level"
@@ -4052,7 +4052,7 @@ msgstr "Hyper відповідає Win"

 #: rules/base.xml:7030
 msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Клавіша Alt відповідає правій клавіші Win, а Super - клавіші Menu."
+msgstr "Клавіша Alt відповідає правій клавіші Win, а Super - клавіші Menu"

 #: rules/base.xml:7036
 msgid "Left Alt is swapped with Left Win"
@@ -4264,7 +4264,7 @@ msgstr "Незв’язувальний символ нульової ширин

 #: rules/base.xml:7443
 msgid "Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level"
-msgstr "Незв’язувальний символ нульової ширини на 2-му рівні, зв’язувальний символ нульової ширини на 3-му рівні, символ нерозривного пробілу на 4-му рівні"
+msgstr ""

 #: rules/base.xml:7449
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level"
@@ -4272,15 +4272,15 @@ msgstr "Незв’язувальний символ нульової ширин

 #: rules/base.xml:7455
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, nothing at the 4th level"
-msgstr "Незв’язувальний символ нульової ширини на 2-му рівні, нерозривний пробіл на 3-му рівні, нічого на 4-му рівні"
+msgstr ""

 #: rules/base.xml:7461
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level"
-msgstr "Незв’язувальний символ нульової ширини на 2-му рівні, символ нерозривного пробілу на 3-му рівні, зв’язувальний символ нульової ширини на 4-му"
+msgstr ""

 #: rules/base.xml:7467
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level"
-msgstr "Незв’язувальний нульової ширини на 2-му рівні, нерозривний пробіл на 3-му рівні, вузький нерозривний пробіл на 4-му рівні"
+msgstr ""

 #: rules/base.xml:7473
 msgid "Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level"
yurchor commented 4 years ago

Fixed and sent upstream through TP. Many thanks.

rbuj commented 4 years ago

@yurchor I'm sorry I couldn't help you with the translations starting with "Zero-width non-joiner at the 2nd level..." I'm not used to read Ukrainian alphabet.

yurchor commented 4 years ago

@yurchor I'm sorry I couldn't help you with the translations starting with "Zero-width non-joiner at the 2nd level..." I'm not used to read Ukrainian alphabet.

Nevermind. I have shortened them to be shorter than English ones. Many thanks for your help. So I'm waiting for the confirmation from the reporter that it solves the issue to close this bug report.

bmivzkrp commented 4 years ago

@yurchor: Unfortunately, the problem has not disappeared. (

rbuj commented 4 years ago

@bmivzkrp did you update xkeyboard-config.mo?

uk.po.gz

$ gunzip uk.po.gz
$ sudo msgfmt uk.po -o /usr/share/locale-langpack/uk/LC_MESSAGES/xkeyboard-config.mo

uk po

bmivzkrp commented 4 years ago

@rbuj: Thank you very much. Now - everything works. Previously, I was checking this situation using already compiled files.

$ wget -c https://github.com/mate-desktop/libmatekbd/files/4502410/uk.po.gz

$ gunzip uk.po.gz

$ sudo msgfmt uk.po -o /usr/share/locale-langpack/uk/LC_MESSAGES/xkeyboard-config.mo

bmivzkrp commented 4 years ago

However, I believe that MATE settings should not fall due to translation defects.

zvbarev commented 4 years ago

Hi All! I'm coordinator of Ubuntu Russian translators. Some time ago @yurchor told me that problem exists in Russian too. I tried to fix PO but it seems the problem is deeper.

@rbuj could you test Russian translation in order to find a problem?

rbuj commented 4 years ago
diff --git a/po/ru.po b/po/ru.po
index 639440b..436935a 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -147,7 +147,7 @@ msgstr "Cherry Blue Line CyBo@rd"

 #: rules/base.xml:216
 msgid "Cherry CyMotion Master XPress"
-msgstr " Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master XPress"

 #: rules/base.xml:223
 msgid "Cherry Blue Line CyBo@rd (alt.)"
@@ -3806,7 +3806,7 @@ msgstr "Backslash; действует как разовая блокировка

 #: rules/base.xml:6640
 msgid "&lt;Less/Greater&gt;; acts as onetime lock when pressed together with another 3rd level chooser"
-msgstr "&lt;Меньше чем/Больше чем&gt;; действует как разовая блокировка при нажатии вместе с другим выборщиком 3-го ряда"
+msgstr ""

 #: rules/base.xml:6648
 msgid "Ctrl position"
@@ -4005,7 +4005,7 @@ msgstr "Использовать Caps Lock как дополнительную 

 #: rules/base.xml:6957
 msgid "Caps Lock is also a Ctrl"
-msgstr "Caps Lock как Ctrl"
+msgstr ""

 #: rules/base.xml:6963
 msgid "Caps Lock is disabled"
@@ -4209,15 +4209,15 @@ msgstr "&lt;Меньше чем/Больше чем&gt; выбирается 5-

 #: rules/base.xml:7320
 msgid "Right Alt chooses 5th level; acts as onetime lock when pressed together with another 5th level chooser"
-msgstr "Правая Alt выбирает 5-й ряд; действует как разовая блокировка при нажатии вместе с другим выборщиком 5-го ряда"
+msgstr ""

 #: rules/base.xml:7326
 msgid "Left Win chooses 5th level; acts as onetime lock when pressed together with another 5th level chooser"
-msgstr "Левая Win выбирает 5-й ряд; действует как разовая блокировка при нажатии вместе с другим выборщиком 5-го ряда"
+msgstr ""

 #: rules/base.xml:7332
 msgid "Right Win chooses 5th level; acts as onetime lock when pressed together with another 5th level chooser"
-msgstr "Правая Win выбирает 5-й ряд; действует как разовая блокировка при нажатии вместе с другим выборщиком 5-го ряда"
+msgstr ""

 #: rules/base.xml:7378
 msgid "Using space key to input non-breaking space"
@@ -4265,7 +4265,7 @@ msgstr "Несвязывающий символ нулевой ширины во

 #: rules/base.xml:7443
 msgid "Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level"
-msgstr "Несвязывающий символ нулевой ширины во 2-м ряду, связывающий символ нулевой ширины в 3-м ряду, неразрывный пробел в 4-м ряду"
+msgstr ""

 #: rules/base.xml:7449
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level"
@@ -4277,7 +4277,7 @@ msgstr "Несвязывающий символ нулевой ширины во

 #: rules/base.xml:7461
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level"
-msgstr "Несвязывающий символ нулевой ширины во 2-м ряду, неразрывный пробел в 3-м ряду, связывающий символ нулевой ширины в 4-м ряду"
+msgstr ""

 #: rules/base.xml:7467
 msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level"

Test: ru.po.gz

$ gunzip ru.po.gz
$ sudo msgfmt ru.po -o /usr/share/locale/ru/LC_MESSAGES/xkeyboard-config.mo 
$ LANG=ru_RU.UTF-8  mate-keyboard-properties 

ru

zvbarev commented 4 years ago

For Russian it's ok. I corrected the file, updated in launchpad and sent to upstream to the maintainer of xkeyboard-config Russian translation.

bmivzkrp commented 4 years ago

Information for Ukrainian MATE users: the modified translation file is included in the Ubuntu 20.04 and Ubuntu 20.10 updates.

https://bugs.launchpad.net/ubuntu/+source/language-pack-uk/+bug/1875020

Dear MATE developers, please fix this problem so that mate-keyboard-properties is stable regardless of the contents of the translation files.

bmivzkrp commented 3 years ago

MATE 1.26, session Xorg. The problem still exists ...

correctmost commented 8 months ago

The root cause of this bug is that libxklavier truncates long strings and inadvertently creates invalid UTF-8 strings: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/435

libxklavier is no longer maintained, so the above ticket documents some potential paths forward for consumers of the library.