aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Tari <robert@tari.in>2021-01-24 03:38:44 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-01-27 17:10:40 +0100
commitb85daf94830a3ca39d59237fdb07bc33ede1c450 (patch)
tree8d704b1d8614759da71fbe42dca737c0e2261142
parent9b8fb0492c8c05630644d840aef520f3c6b17829 (diff)
downloadayatana-indicator-keyboard-b85daf94830a3ca39d59237fdb07bc33ede1c450.tar.gz
ayatana-indicator-keyboard-b85daf94830a3ca39d59237fdb07bc33ede1c450.tar.bz2
ayatana-indicator-keyboard-b85daf94830a3ca39d59237fdb07bc33ede1c450.zip
100% re-write of the keyboard indicator in plain C.
-rw-r--r--.gitignore3
-rw-r--r--AUTHORS2
-rw-r--r--AUTHORS.Canonical1
-rw-r--r--CMakeLists.txt47
-rw-r--r--COPYING.LESSER165
-rw-r--r--INSTALL0
-rw-r--r--Makefile.am5
-rw-r--r--Makefile.am.coverage48
-rw-r--r--NEWS0
-rw-r--r--README17
-rw-r--r--README.md7
-rw-r--r--TODO0
-rwxr-xr-xautogen.sh7
-rw-r--r--configure.ac70
-rw-r--r--data/CMakeLists.txt43
-rw-r--r--data/Makefile.am106
-rwxr-xr-xdata/ayatana-indicator-keyboard-icon-generator122
-rw-r--r--data/ayatana-indicator-keyboard.conf.in9
-rw-r--r--data/ayatana-indicator-keyboard.desktop.in2
-rw-r--r--data/ayatana-indicator-keyboard.service.in11
-rw-r--r--data/icon-1.svg.in1
-rw-r--r--data/icon-generator.vala241
-rw-r--r--data/icon.svg.in1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-am.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-as.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-av.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-az.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-be.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-br.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-by.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-da.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-de.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-en.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-es.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-et.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-he.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-id.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-in.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-is.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-it.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-km.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-md.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-my.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-no.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-or.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-si.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-te.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-th.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-us.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg1
-rw-r--r--data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg1
-rw-r--r--data/org.ayatana.indicator.keyboard14
-rw-r--r--data/org.ayatana.indicator.keyboard.gschema.xml15
-rw-r--r--data/upstart/Makefile.am12
-rw-r--r--data/upstart/ayatana-indicator-keyboard.desktop.in9
-rw-r--r--debian/ayatana-indicator-keyboard.links3
-rw-r--r--debian/control44
-rw-r--r--debian/copyright33
-rw-r--r--debian/docs2
-rwxr-xr-xdebian/rules19
-rw-r--r--debian/source/format2
-rw-r--r--deps/Fcitx-1.0.metadata7
-rw-r--r--deps/Gkbd-3.0.metadata23
-rw-r--r--deps/GnomeDesktop-3.0.metadata1
-rw-r--r--deps/Xkl-1.0.metadata19
-rw-r--r--m4/gcov.m486
-rw-r--r--po/CMakeLists.txt6
-rw-r--r--po/LINGUAS4
-rw-r--r--po/Makevars5
-rw-r--r--po/POTFILES.in8
-rw-r--r--po/POTFILES.skip2
-rw-r--r--po/aa.po48
-rw-r--r--po/af.po45
-rw-r--r--po/am.po45
-rw-r--r--po/an.po31
-rw-r--r--po/ar.po45
-rw-r--r--po/as.po49
-rw-r--r--po/ast.po45
-rw-r--r--po/ayatana-indicator-keyboard.pot19
-rw-r--r--po/az.po45
-rw-r--r--po/be.po50
-rw-r--r--po/bem.po31
-rw-r--r--po/bg.po46
-rw-r--r--po/bn.po47
-rw-r--r--po/bo.po31
-rw-r--r--po/br.po45
-rw-r--r--po/bs.po45
-rw-r--r--po/ca.po45
-rw-r--r--po/ca@valencia.po47
-rw-r--r--po/ce.po39
-rw-r--r--po/ckb.po41
-rw-r--r--po/co.po31
-rw-r--r--po/crh.po31
-rw-r--r--po/cs.po46
-rw-r--r--po/csb.po29
-rw-r--r--po/cv.po31
-rw-r--r--po/cy.po45
-rw-r--r--po/da.po46
-rw-r--r--po/de.po46
-rw-r--r--po/dv.po29
-rw-r--r--po/el.po46
-rw-r--r--po/en_AU.po48
-rw-r--r--po/en_CA.po48
-rw-r--r--po/en_GB.po48
-rw-r--r--po/eo.po46
-rw-r--r--po/es.po46
-rw-r--r--po/et.po46
-rw-r--r--po/eu.po45
-rw-r--r--po/fa.po45
-rw-r--r--po/fi.po46
-rw-r--r--po/fil.po31
-rw-r--r--po/fo.po46
-rw-r--r--po/fr.po46
-rw-r--r--po/fr_CA.po48
-rw-r--r--po/frp.po31
-rw-r--r--po/fur.po29
-rw-r--r--po/fy.po31
-rw-r--r--po/ga.po46
-rw-r--r--po/gd.po47
-rw-r--r--po/gl.po47
-rw-r--r--po/gu.po31
-rw-r--r--po/gv.po48
-rw-r--r--po/he.po46
-rw-r--r--po/hi.po45
-rw-r--r--po/hr.po47
-rw-r--r--po/ht.po31
-rw-r--r--po/hu.po46
-rw-r--r--po/hy.po47
-rw-r--r--po/ia.po45
-rw-r--r--po/id.po45
-rw-r--r--po/is.po47
-rw-r--r--po/it.po46
-rw-r--r--po/it_CARES.po30
-rw-r--r--po/ja.po46
-rw-r--r--po/ka.po31
-rw-r--r--po/kk.po46
-rw-r--r--po/kl.po31
-rw-r--r--po/km.po47
-rw-r--r--po/kn.po45
-rw-r--r--po/ko.po46
-rw-r--r--po/ku.po31
-rw-r--r--po/kw.po31
-rw-r--r--po/ky.po31
-rw-r--r--po/la.po31
-rw-r--r--po/lb.po47
-rw-r--r--po/lo.po41
-rw-r--r--po/lt.po47
-rw-r--r--po/lv.po47
-rw-r--r--po/mg.po43
-rw-r--r--po/mhr.po45
-rw-r--r--po/mi.po39
-rw-r--r--po/mk.po29
-rw-r--r--po/ml.po45
-rw-r--r--po/mr.po47
-rw-r--r--po/ms.po47
-rw-r--r--po/my.po47
-rw-r--r--po/nb.po46
-rw-r--r--po/ne.po45
-rw-r--r--po/nl.po46
-rw-r--r--po/nn.po31
-rw-r--r--po/ny.po48
-rw-r--r--po/oc.po47
-rw-r--r--po/os.po31
-rw-r--r--po/pa.po45
-rw-r--r--po/pl.po50
-rw-r--r--po/ps.po31
-rw-r--r--po/pt.po48
-rw-r--r--po/pt_BR.po46
-rw-r--r--po/ro.po47
-rw-r--r--po/ru.po47
-rw-r--r--po/sa.po45
-rw-r--r--po/sc.po46
-rw-r--r--po/sd.po31
-rw-r--r--po/se.po31
-rw-r--r--po/shn.po31
-rw-r--r--po/si.po47
-rw-r--r--po/sk.po46
-rw-r--r--po/sl.po47
-rw-r--r--po/sq.po45
-rw-r--r--po/sr.po47
-rw-r--r--po/sv.po48
-rw-r--r--po/sw.po31
-rw-r--r--po/szl.po41
-rw-r--r--po/ta.po45
-rw-r--r--po/ta_LK.po29
-rw-r--r--po/te.po45
-rw-r--r--po/tg.po45
-rw-r--r--po/th.po39
-rw-r--r--po/ti.po31
-rw-r--r--po/tr.po46
-rw-r--r--po/tt.po29
-rw-r--r--po/ug.po47
-rw-r--r--po/uk.po47
-rw-r--r--po/ur.po31
-rw-r--r--po/uz.po45
-rw-r--r--po/vec.po29
-rw-r--r--po/vi.po46
-rw-r--r--po/wae.po31
-rw-r--r--po/wo.po48
-rw-r--r--po/zh_CN.po47
-rw-r--r--po/zh_HK.po45
-rw-r--r--po/zh_TW.po47
-rw-r--r--src/CMakeLists.txt28
-rw-r--r--src/Makefile.am55
-rw-r--r--src/common.vala37
-rw-r--r--src/ibus-menu.vala313
-rw-r--r--src/ibus-panel.vala26
-rw-r--r--src/indicator-menu.vala151
-rw-r--r--src/keyboard-plugin.vala23
-rw-r--r--src/keyboard.c287
-rw-r--r--src/keyboard.h37
-rw-r--r--src/main.c40
-rw-r--r--src/main.vala1265
-rw-r--r--src/service.c412
-rw-r--r--src/service.h36
-rw-r--r--src/source.vala487
-rw-r--r--src/unity-greeter.vala26
-rw-r--r--src/unity-session.vala24
-rw-r--r--src/utils.c167
-rw-r--r--src/utils.h38
-rw-r--r--src/window-stack.vala37
-rw-r--r--tests/Makefile.am19
-rw-r--r--tests/autopilot/Makefile.am5
-rw-r--r--tests/autopilot/__init__.py6
-rwxr-xr-xtests/autopilot/test.sh6
-rw-r--r--tests/autopilot/tests/Makefile.am1
-rw-r--r--tests/autopilot/tests/__init__.py0
-rw-r--r--tests/autopilot/tests/test_indicator_keyboard.py60
-rw-r--r--tests/config.vala.in3
l---------tests/execute/gkbd-keyboard-display1
l---------tests/execute/gucharmap1
-rwxr-xr-xtests/execute/org.ayatana.indicator.keyboard.test.Execute3
l---------tests/execute/unity-control-center1
-rw-r--r--tests/fixture.vala125
-rw-r--r--tests/indicator-keyboard-test.in15
-rw-r--r--tests/main.vala650
-rw-r--r--tests/manual15
-rw-r--r--tests/profiles/indicator-keyboard-test1
-rw-r--r--tests/services/ayatana-indicator-keyboard.service.in3
-rw-r--r--tests/services/ca.desrt.dconf.service3
-rw-r--r--tests/services/gvfs-daemon.service3
-rwxr-xr-xupdate-po.sh11
-rwxr-xr-xupdate-pot.sh11
329 files changed, 3799 insertions, 7418 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..b55044f6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+TODO.txt
+project.geany
+__pycache__/
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 62ba656d..00000000
--- a/AUTHORS
+++ /dev/null
@@ -1,2 +0,0 @@
-Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
-William Hua <william.hua@canonical.com>
diff --git a/AUTHORS.Canonical b/AUTHORS.Canonical
deleted file mode 100644
index b3718204..00000000
--- a/AUTHORS.Canonical
+++ /dev/null
@@ -1 +0,0 @@
-William Hua <william.hua@canonical.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..9957f4e4
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,47 @@
+project(ayatana-indicator-keyboard C CXX)
+cmake_minimum_required(VERSION 2.8.12)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+set(PROJECT_VERSION "0.8.1")
+set(PACKAGE ${CMAKE_PROJECT_NAME})
+
+# GNU standard installation directories
+include (GNUInstallDirs)
+set (CMAKE_INSTALL_PKGLIBEXECDIR "${CMAKE_INSTALL_LIBEXECDIR}/${CMAKE_PROJECT_NAME}")
+set (CMAKE_INSTALL_FULL_PKGLIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/${CMAKE_PROJECT_NAME}")
+
+# Gettext
+set(GETTEXT_PACKAGE "ayatana-indicator-keyboard")
+add_definitions (-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}" -DLOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}")
+
+# Check for prerequisites
+find_package (PkgConfig REQUIRED)
+include (CheckIncludeFile)
+include (FindPkgConfig)
+pkg_check_modules(SERVICE_DEPS REQUIRED glib-2.0>=2.36 gio-2.0>=2.36 x11>=1.7.0 libxklavier>=5.4)
+include_directories (SYSTEM ${SERVICE_DEPS_INCLUDE_DIRS})
+
+# custom targets
+set (ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION})
+add_custom_target (dist COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.gz WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+add_custom_target (cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2 --inline-suppr ${CMAKE_SOURCE_DIR}/src)
+
+# Actual building
+if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+
+ set(C_WARNING_ARGS "${C_WARNING_ARGS} -Weverything")
+ set(C_WARNING_ARGS "${C_WARNING_ARGS} -Wno-c++98-compat -Wno-padded")
+ set(C_WARNING_ARGS "${C_WARNING_ARGS} -Wno-documentation")
+
+else()
+
+ set(C_WARNING_ARGS "${C_WARNING_ARGS} -Wall -Wformat=2")
+
+endif()
+
+include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
+include_directories (${CMAKE_CURRENT_BINARY_DIR}/include)
+
+# actually build things
+add_subdirectory(src)
+add_subdirectory(data)
+add_subdirectory(po)
diff --git a/COPYING.LESSER b/COPYING.LESSER
deleted file mode 100644
index 65c5ca88..00000000
--- a/COPYING.LESSER
+++ /dev/null
@@ -1,165 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index e69de29b..00000000
--- a/INSTALL
+++ /dev/null
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index bc9f0c5b..00000000
--- a/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4
-
-SUBDIRS = po src data tests
-
-include $(top_srcdir)/Makefile.am.coverage
diff --git a/Makefile.am.coverage b/Makefile.am.coverage
deleted file mode 100644
index fb977474..00000000
--- a/Makefile.am.coverage
+++ /dev/null
@@ -1,48 +0,0 @@
-
-# Coverage targets
-
-.PHONY: clean-gcno clean-gcda \
- coverage-html generate-coverage-html clean-coverage-html \
- coverage-gcovr generate-coverage-gcovr clean-coverage-gcovr
-
-clean-local: clean-gcno clean-coverage-html clean-coverage-gcovr
-
-if HAVE_GCOV
-
-clean-gcno:
- @echo Removing old coverage instrumentation
- -find -name '*.gcno' -print | xargs -r rm
-
-clean-gcda:
- @echo Removing old coverage results
- -find -name '*.gcda' -print | xargs -r rm
-
-coverage-html: clean-gcda
- -$(MAKE) $(AM_MAKEFLAGS) -k check
- $(MAKE) $(AM_MAKEFLAGS) generate-coverage-html
-
-generate-coverage-html:
- @echo Collecting coverage data
- $(LCOV) --directory $(top_builddir) --capture --output-file coverage.info --no-checksum --compat-libtool
- LANG=C $(GENHTML) --prefix $(top_builddir) --output-directory coveragereport --title "Code Coverage" --legend --show-details coverage.info
-
-clean-coverage-html: clean-gcda
- -$(LCOV) --directory $(top_builddir) -z
- -rm -rf coverage.info coveragereport
-
-if HAVE_GCOVR
-
-coverage-gcovr: clean-gcda
- -$(MAKE) $(AM_MAKEFLAGS) -k check
- $(MAKE) $(AM_MAKEFLAGS) generate-coverage-gcovr
-
-generate-coverage-gcovr:
- @echo Generating coverage GCOVR report
- $(GCOVR) -x -r $(top_builddir) -o $(top_builddir)/coverage.xml
-
-clean-coverage-gcovr: clean-gcda
- -rm -rf $(top_builddir)/coverage.xml
-
-endif # HAVE_GCOVR
-
-endif # HAVE_GCOV
diff --git a/NEWS b/NEWS
deleted file mode 100644
index e69de29b..00000000
--- a/NEWS
+++ /dev/null
diff --git a/README b/README
deleted file mode 100644
index bb33d3c6..00000000
--- a/README
+++ /dev/null
@@ -1,17 +0,0 @@
-ayatana-indicator-keyboard-icon-generator
-==========================================
-
-To refresh the keyboard layout icons, I usually enter the data directory and
-run:
-
-./ayatana-indicator-keyboard-icon-generator -i icon.svg.in -I icon-1.svg.in -o dark -c '#dfdbd2'
-./ayatana-indicator-keyboard-icon-generator -i icon.svg.in -I icon-1.svg.in -o light -c '#3c3c3c'
-('#dfdbd2' and '#3c3c3c' are the colours for the dark and light themes.)
-
-Then I just copy the files in the dark and light directories to
-ubuntu-mono-dark/status/22 and ubuntu-mono-light/status/22 in the ubuntu-themes
-source package.
-
-data/icon.svg.in and data/icon-1.svg.in are template files for the
-un-subscripted and subscripted icons. Parameters can be tweaked on the command
-line for the generator: './ayatana-indicator-keyboard-icon-generator -h' for details.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..391103c5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+# Ayatana Keyboard Indicator
+
+### Themed icons
+To generate icons for a theme, you can use the icon generator in the data directory. Run it with the -h switch for help on usage.
+
+### TODO
+- Drop utils and use libayatana-common
diff --git a/TODO b/TODO
deleted file mode 100644
index e69de29b..00000000
--- a/TODO
+++ /dev/null
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 4498c240..00000000
--- a/autogen.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh -e
-
-mkdir -p m4
-autoreconf -i
-intltoolize -c -f
-
-test -n "$NOCONFIGURE" || ./configure "$@"
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 0b9ccfb7..00000000
--- a/configure.ac
+++ /dev/null
@@ -1,70 +0,0 @@
-AC_PREREQ([2.69])
-
-AC_INIT([ayatana-indicator-keyboard], [0.1.1])
-AC_REVISION([0.1.0])
-
-AC_CONFIG_SRCDIR([configure.ac])
-AC_CONFIG_AUX_DIR([build-aux])
-AC_CONFIG_MACRO_DIR([m4])
-
-AM_INIT_AUTOMAKE([1.11 foreign serial-tests -Wall -Woverride -Wno-portability])
-AM_SILENT_RULES([yes])
-
-LT_INIT
-
-AC_PROG_CC
-AM_PROG_VALAC
-AC_PROG_LIBTOOL
-AC_PROG_INSTALL
-PKG_PROG_PKG_CONFIG([0.26])
-
-AC_ARG_WITH([dbus-service-dir], [AS_HELP_STRING([--with-dbus-service-dir=DIR], [D-Bus service directory [default=$datadir/dbus-1/services]])], [], [with_dbus_service_dir=$datadir/dbus-1/services])
-AC_ARG_WITH([indicator-dir], [AS_HELP_STRING([--with-indicator-dir=DIR], [Indicator directory [default=$datadir/ayatana/indicators]])], [], [with_indicator_dir=$datadir/ayatana/indicators])
-
-AM_PATH_PYTHON
-
-AC_SUBST([DBUS_SERVICE_DIR], [$with_dbus_service_dir])
-AC_SUBST([INDICATOR_DIR], [$with_indicator_dir])
-
-GETTEXT_PACKAGE=ayatana-indicator-keyboard
-AC_SUBST([GETTEXT_PACKAGE])
-AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [The prefix for our gettext translation domains.])
-AM_GLIB_GNU_GETTEXT
-IT_PROG_INTLTOOL
-
-GLIB_GSETTINGS
-
-PKG_CHECK_MODULES([GEE], [gee-1.0])
-PKG_CHECK_MODULES([GIO], [gio-2.0])
-PKG_CHECK_MODULES([GTK], [gtk+-3.0])
-PKG_CHECK_MODULES([PANGOFT2], [pangoft2])
-PKG_CHECK_MODULES([PANGOCAIRO], [pangocairo])
-PKG_CHECK_MODULES([LIBXKLAVIER], [libxklavier])
-PKG_CHECK_MODULES([LIBGNOMEKBD], [libgnomekbdui])
-PKG_CHECK_MODULES([IBUS], [ibus-1.0])
-PKG_CHECK_MODULES([FCITX_GCLIENT], [fcitx-gclient])
-PKG_CHECK_MODULES([ACCOUNTSSERVICE], [accountsservice])
-PKG_CHECK_MODULES([LIGHTDM], [liblightdm-gobject-1])
-
-m4_include([m4/gcov.m4])
-AC_TDD_GCOV
-AM_CONDITIONAL([HAVE_GCOV], [test "x$ac_cv_check_gcov" = xyes])
-AM_CONDITIONAL([HAVE_LCOV], [test "x$ac_cv_check_lcov" = xyes])
-AM_CONDITIONAL([HAVE_GCOVR], [test "x$ac_cv_check_gcovr" = xyes])
-AC_SUBST(COVERAGE_CFLAGS)
-AC_SUBST(COVERAGE_CXXFLAGS)
-AC_SUBST(COVERAGE_LDFLAGS)
-
-AC_CONFIG_FILES([Makefile
- data/Makefile
- data/upstart/Makefile
- src/Makefile
- po/Makefile.in
- tests/Makefile
- tests/autopilot/Makefile
- tests/config.vala
- tests/services/ayatana-indicator-keyboard.service])
-AC_CONFIG_FILES([tests/indicator-keyboard-test],
- [chmod +x tests/indicator-keyboard-test])
-
-AC_OUTPUT
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
new file mode 100644
index 00000000..ab5bd3f7
--- /dev/null
+++ b/data/CMakeLists.txt
@@ -0,0 +1,43 @@
+
+# Systemd Unit File
+
+pkg_check_modules(SYSTEMD systemd)
+
+if (${SYSTEMD_FOUND})
+
+ pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)
+ message (STATUS "${SYSTEMD_USER_DIR} is the systemd user unit file install dir")
+ set (SYSTEMD_USER_NAME "${CMAKE_PROJECT_NAME}.service")
+ set (SYSTEMD_USER_FILE "${CMAKE_CURRENT_BINARY_DIR}/${SYSTEMD_USER_NAME}")
+ set (SYSTEMD_USER_FILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SYSTEMD_USER_NAME}.in")
+ set (pkglibexecdir "${CMAKE_INSTALL_FULL_PKGLIBEXECDIR}")
+ configure_file ("${SYSTEMD_USER_FILE_IN}" "${SYSTEMD_USER_FILE}")
+ install (FILES "${SYSTEMD_USER_FILE}" DESTINATION "${SYSTEMD_USER_DIR}")
+
+endif()
+
+# XDG Autostart File
+
+set (XDG_AUTOSTART_DIR "/etc/xdg/autostart")
+message (STATUS "${XDG_AUTOSTART_DIR} is the DBus Service File install dir")
+set (XDG_AUTOSTART_NAME "${CMAKE_PROJECT_NAME}.desktop")
+set (XDG_AUTOSTART_FILE "${CMAKE_CURRENT_BINARY_DIR}/${XDG_AUTOSTART_NAME}")
+set (XDG_AUTOSTART_FILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/${XDG_AUTOSTART_NAME}.in")
+set (pkglibexecdir "${CMAKE_INSTALL_FULL_PKGLIBEXECDIR}")
+configure_file ("${XDG_AUTOSTART_FILE_IN}" "${XDG_AUTOSTART_FILE}")
+install (FILES "${XDG_AUTOSTART_FILE}" DESTINATION "${XDG_AUTOSTART_DIR}")
+
+# Ayatana Indicators File
+
+set (AYATANA_INDICATOR_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/ayatana/indicators")
+message (STATUS "${AYATANA_INDICATOR_DIR} is the Ayatana Indicators install dir")
+set (AYATANA_INDICATOR_NAME "org.ayatana.indicator.keyboard")
+set (AYATANA_INDICATOR_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${AYATANA_INDICATOR_NAME}")
+install (FILES "${AYATANA_INDICATOR_FILE}" DESTINATION "${AYATANA_INDICATOR_DIR}")
+
+# Icons
+
+set (ICON_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/icons/hicolor")
+message (STATUS "${ICON_DIR} is the Icon install dir")
+install (DIRECTORY icons/scalable DESTINATION "${ICON_DIR}" FILES_MATCHING PATTERN "*.svg")
+install(CODE "execute_process (COMMAND gtk-update-icon-cache -t -f ${ICON_DIR})" CODE "message (STATUS \"Updating icon cache\")")
diff --git a/data/Makefile.am b/data/Makefile.am
deleted file mode 100644
index 6f33aeaf..00000000
--- a/data/Makefile.am
+++ /dev/null
@@ -1,106 +0,0 @@
-
-SUBDIRS = upstart
-
-###########################
-# Icon Generator
-###########################
-
-noinst_PROGRAMS = ayatana-indicator-keyboard-icon-generator
-
-AM_CFLAGS = -w -DGNOME_DESKTOP_USE_UNSTABLE_API
-AM_LDFLAGS = -lm
-AM_VALAFLAGS = --enable-experimental-non-null \
- --metadatadir $(top_srcdir)/deps \
- --vapidir $(top_srcdir)/deps
-
-ayatana_indicator_keyboard_icon_generator_SOURCES = icon-generator.vala \
- $(top_srcdir)/lib/common.vala
-ayatana_indicator_keyboard_icon_generator_VALAFLAGS = $(AM_VALAFLAGS) \
- --pkg gee-1.0 \
- --pkg fontconfig-2.0 \
- --pkg freetype2-2.0 \
- --pkg PangoFT2-1.0 \
- --pkg gtk+-3.0 \
- --pkg GDesktopEnums-3.0 \
- --pkg GnomeDesktop-3.0 \
- --pkg Xkl-1.0
-ayatana_indicator_keyboard_icon_generator_CFLAGS = $(AM_CFLAGS) \
- $(GEE_CFLAGS) \
- $(PANGOFT2_CFLAGS) \
- $(GTK_CFLAGS) \
- $(GNOME_DESKTOP_CFLAGS) \
- $(LIBXKLAVIER_CFLAGS) \
- $(COVERAGE_CFLAGS)
-ayatana_indicator_keyboard_icon_generator_LDFLAGS = $(AM_LDFLAGS) \
- $(GEE_LIBS) \
- $(PANGOFT2_LIBS) \
- $(GTK_LIBS) \
- $(GNOME_DESKTOP_LIBS) \
- $(LIBXKLAVIER_LIBS) \
- $(COVERAGE_LDFLAGS)
-
-###########################
-# Upstart Config
-###########################
-
-upstart_jobsdir = $(datadir)/upstart/sessions/
-upstart_jobs_DATA = ayatana-indicator-keyboard.conf
-
-%.conf: %.conf.in
- $(AM_V_GEN) sed -e "s|\@pkglibexecdir\@|$(pkglibexecdir)|" $< > $@
-
-###########################
-# XDG Autostart File
-###########################
-
-xdg_autostartdir = /etc/xdg/autostart
-xdg_autostart_DATA = ayatana-indicator-keyboard.desktop
-
-%.desktop: %.desktop.in
- $(AM_V_GEN) sed -e "s|\@pkglibexecdir\@|$(pkglibexecdir)|" $< > $@
-
-###########################
-# Indicator Config
-###########################
-
-dist_indicator_DATA = org.ayatana.indicator.keyboard
-indicatordir = $(INDICATOR_DIR)
-
-org.ayatana.indicator.keyboard:
- $(AM_V_GEN) (echo '[Indicator Service]'; \
- echo 'Name=ayatana-indicator-keyboard'; \
- echo 'ObjectPath=/org/ayatana/indicator/keyboard'; \
- echo 'Position=80'; \
- echo ''; \
- echo '[desktop]'; \
- echo 'ObjectPath=/org/ayatana/indicator/keyboard/desktop'; \
- echo ''; \
- echo '[desktop_greeter]'; \
- echo 'ObjectPath=/org/ayatana/indicator/keyboard/desktop_greeter'; \
- echo ''; \
- echo '[desktop_lockscreen]'; \
- echo 'ObjectPath=/org/ayatana/indicator/keyboard/desktop_lockscreen'; \
- echo ''; \
- echo '[ubiquity]'; \
- echo 'ObjectPath=/org/ayatana/indicator/keyboard/desktop') > $@.tmp && \
- mv $@.tmp $@
-
-###########################
-# GSettings Schemas
-###########################
-
-gsettings_SCHEMAS = org.ayatana.indicator.keyboard.gschema.xml
-
-@GSETTINGS_RULES@
-
-check_DATA = gschemas.compiled
-
-gschemas.compiled: $(gsettings_SCHEMAS)
- $(GLIB_COMPILE_SCHEMAS) --strict .
-
-EXTRA_DIST = $(dist_service_DATA) \
- $(dist_indicator_DATA) \
- $(gsettings_SCHEMAS) \
- ayatana-indicator-keyboard.conf.in \
- ayatana-indicator-keyboard.desktop.in
-
diff --git a/data/ayatana-indicator-keyboard-icon-generator b/data/ayatana-indicator-keyboard-icon-generator
new file mode 100755
index 00000000..96c4b1b7
--- /dev/null
+++ b/data/ayatana-indicator-keyboard-icon-generator
@@ -0,0 +1,122 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import gi
+
+gi.require_version('Xkl', '1.0')
+gi.require_version('PangoFT2', '1.0')
+
+from gi.repository import Xkl, GdkX11, PangoFT2, Pango
+from pathlib import Path
+#from Xlib.display import Display
+import sys
+import getopt
+
+def printHelp():
+
+ print('')
+ print('Usage:')
+ print('')
+ print('ayatana-indicator-keyboard-icon-generator -p <padding> -c <colour> -f <font> -o <outdir>')
+ print('')
+ print('<padding> The padding between the fill and the edges of the image')
+ print(' Defaults to 0 pixels')
+ print('<colour> The colour of the fill')
+ print(' Defaults to "#ffffff"')
+ print('<font> The font family')
+ print(' Defaults to "Sans Regular"')
+ print('<outdir> The output directory')
+ print(' Defaults to the current directory')
+ print('')
+
+def onLanguage(pRegistry, pConfigItem, lParams):
+
+ bCheckVariant = lParams[0]
+ lLanguages = lParams[1]
+ sLanguage = pConfigItem.get_short_description()[0:2]
+
+ if sLanguage and sLanguage not in lLanguages:
+
+ lLanguages.append(sLanguage)
+
+ if bCheckVariant:
+
+ pRegistry.foreach_layout_variant(pConfigItem.get_name(), onLanguage, [False, lLanguages])
+
+if __name__ == '__main__':
+
+ nPadding = 0
+ sColour = '#ffffff'
+ sFont = "Sans Regular"
+ pOutDir = Path.cwd()
+ nFont = 15
+ lOpts = []
+
+ try:
+
+ lOpts = getopt.getopt(sys.argv[1:], 'hp:c:f:o:')[0]
+
+ except getopt.GetoptError:
+
+ printHelp()
+ sys.exit(1)
+
+ for sOpt, sArg in lOpts:
+
+ if sOpt == '-h':
+
+ printHelp()
+ sys.exit(0)
+
+ elif sOpt == '-p':
+
+ nPadding = int(sArg)
+
+ elif sOpt == '-c':
+
+ sColour = sArg
+
+ elif sOpt == '-f':
+
+ sFont = sArg
+
+ elif sOpt == '-o':
+
+ pOutDir = Path(sArg)
+
+ pOutDir.mkdir(parents=True, exist_ok=True)
+ lLanguages = []
+ #pDisplay = Display()
+ pDisplay = GdkX11.x11_get_default_xdisplay()
+ pEngine = Xkl.Engine.get_instance(pDisplay)
+ pRegistry = Xkl.ConfigRegistry.get_instance(pEngine)
+ pRegistry.load(True)
+ pRegistry.foreach_layout(onLanguage, [True, lLanguages])
+
+ nSize = 24 - (2 * nPadding)
+ fIconX = (24 - nSize) / 2
+ fIconY = (24 - nSize) / 2
+ pFontMap = PangoFT2.FontMap.new()
+ pContext = Pango.FontMap.create_context(pFontMap)
+ pFontDescription = Pango.FontDescription.new()
+ pFontDescription.set_family(sFont)
+ pFontDescription.set_weight(500)
+ pFontDescription.set_size(nFont * Pango.SCALE)
+ pLayout = Pango.Layout.new(pContext)
+ pLayout.set_font_description(pFontDescription)
+
+ for sLanguage in lLanguages:
+
+ sOutPath = pOutDir.joinpath('ayatana-indicator-keyboard-' + sLanguage + '.svg')
+
+ with open(sOutPath, 'w') as pFile:
+
+ sLayout = sLanguage[0].upper() + sLanguage[1]
+ pLayout.set_text(sLayout, -1)
+ nLayoutWidth, nLayoutHeight = pLayout.get_size()
+ nBaseline = pLayout.get_baseline()
+ fLayoutX = (24.0 - (nLayoutWidth / Pango.SCALE)) / 2
+ fLayoutY = (24.0 - (nLayoutHeight / Pango.SCALE)) / 2 + (nBaseline / Pango.SCALE)
+ pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:500;font-size:' + str(nFont) + ';fill:black">' + sLayout + '</text></mask></defs><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(nSize) + '" height="' + str(nSize) + '" rx="3" mask="url(#m)" style="fill:' + sColour + '"/></svg>')
+
+ sys.exit(0)
diff --git a/data/ayatana-indicator-keyboard.conf.in b/data/ayatana-indicator-keyboard.conf.in
deleted file mode 100644
index 5083a485..00000000
--- a/data/ayatana-indicator-keyboard.conf.in
+++ /dev/null
@@ -1,9 +0,0 @@
-description "Ayatana Indicator Keyboard Backend"
-
-start on ayatana-indicator-services-start
-stop on desktop-end or ayatana-indicator-services-end
-
-respawn
-respawn limit 2 10
-
-exec @pkglibexecdir@/ayatana-indicator-keyboard-service --use-gtk
diff --git a/data/ayatana-indicator-keyboard.desktop.in b/data/ayatana-indicator-keyboard.desktop.in
index b31bec51..f7db9936 100644
--- a/data/ayatana-indicator-keyboard.desktop.in
+++ b/data/ayatana-indicator-keyboard.desktop.in
@@ -2,7 +2,7 @@
Type=Application
Name=Ayatana Indicator Keyboard
Exec=@pkglibexecdir@/ayatana-indicator-keyboard-service
-OnlyShowIn=MATE;
+OnlyShowIn=Unity;MATE;XFCE;
NoDisplay=true
StartupNotify=false
Terminal=false
diff --git a/data/ayatana-indicator-keyboard.service.in b/data/ayatana-indicator-keyboard.service.in
new file mode 100644
index 00000000..4a8e1a5d
--- /dev/null
+++ b/data/ayatana-indicator-keyboard.service.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ayatana Indicator Keyboard
+PartOf=graphical-session.target
+PartOf=ayatana-indicators.target
+
+[Service]
+ExecStart=@pkglibexecdir@/ayatana-indicator-keyboard-service
+Restart=on-failure
+
+[Install]
+WantedBy=ayatana-indicators.target
diff --git a/data/icon-1.svg.in b/data/icon-1.svg.in
deleted file mode 100644
index 4f6fbce7..00000000
--- a/data/icon-1.svg.in
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="@WIDTH@" height="@HEIGHT@"><defs><mask id="m"><rect x="0" y="0" width="@WIDTH@" height="@HEIGHT@" style="fill:white"/><text x="@LAYOUT_X@" y="@LAYOUT_Y@" style="@LAYOUT_FONT@;fill:black">@LAYOUT@</text><text x="@SUBSCRIPT_X@" y="@SUBSCRIPT_Y@" style="@SUBSCRIPT_FONT@;fill:black">@SUBSCRIPT@</text></mask></defs><rect x="@ICON_X@" y="@ICON_Y@" width="@ICON_WIDTH@" height="@ICON_HEIGHT@" rx="@RADIUS@" mask="url(#m)" style="fill:@COLOUR@"/></svg>
diff --git a/data/icon-generator.vala b/data/icon-generator.vala
deleted file mode 100644
index 8077f093..00000000
--- a/data/icon-generator.vala
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-int main (string[] args) {
- var force = false;
- var width = 22.0;
- var height = 22.0;
- var icon_width = 20.0;
- var icon_height = 20.0;
- var radius = 2.0;
- var colour = "black";
- var font = "Ubuntu";
- var weight = 500;
- var layout_size = 12;
- var subscript_size = 8;
- string? output_path = null;
- string? no_subscript_path = null;
- string? with_subscript_path = null;
-
- OptionEntry[] options = new OptionEntry[15];
- options[0] = { "force", 'f', 0, OptionArg.NONE, ref force, "Overwrite existing files" };
- options[1] = { "width", 'w', 0, OptionArg.DOUBLE, ref width, "Template width", "DOUBLE" };
- options[2] = { "height", 'h', 0, OptionArg.DOUBLE, ref height, "Template height", "DOUBLE" };
- options[3] = { "icon-width", 'W', 0, OptionArg.DOUBLE, ref icon_width, "Icon width", "DOUBLE" };
- options[4] = { "icon-height", 'H', 0, OptionArg.DOUBLE, ref icon_height, "Icon height", "DOUBLE" };
- options[5] = { "radius", 'r', 0, OptionArg.DOUBLE, ref radius, "Icon radius", "DOUBLE" };
- options[6] = { "colour", 'c', 0, OptionArg.STRING, ref colour, "Icon colour", "COLOUR" };
- options[7] = { "font", 'F', 0, OptionArg.STRING, ref font, "Font family", "NAME" };
- options[8] = { "weight", 'G', 0, OptionArg.INT, ref weight, "Font weight (100 to 1000)", "INT" };
- options[9] = { "layout-size", 's', 0, OptionArg.INT, ref layout_size, "Layout font size", "INT" };
- options[10] = { "subscript-size", 'S', 0, OptionArg.INT, ref subscript_size, "Subscript font size", "INT" };
- options[11] = { "output", 'o', 0, OptionArg.FILENAME, ref output_path, "Output directory", "PATH" };
- options[12] = { "no-subscript", 'i', 0, OptionArg.FILENAME, ref no_subscript_path, "Icon template", "PATH" };
- options[13] = { "with-subscript", 'I', 0, OptionArg.FILENAME, ref with_subscript_path, "Subscript icon template", "PATH" };
- options[14] = { };
-
- try {
- var context = new OptionContext ("- generate keyboard layout icons");
- context.add_main_entries (options, null);
- context.set_help_enabled (true);
- context.parse (ref args);
- } catch (OptionError error) {
- GLib.error ("error: %s", error.message);
- }
-
- if (no_subscript_path == null && with_subscript_path == null) {
- error ("error: No icon template");
- } else if (no_subscript_path == null) {
- no_subscript_path = with_subscript_path;
- } else if (with_subscript_path == null) {
- with_subscript_path = no_subscript_path;
- }
-
- if (output_path != null) {
- var file = File.new_for_path ((!) output_path);
-
- if (!file.query_exists (null)) {
- try {
- file.make_directory_with_parents (null);
- } catch (Error error) {
- GLib.error ("error: %s", error.message);
- }
- }
- } else {
- output_path = ".";
- }
-
- Gtk.init (ref args);
-
- var info = new Gnome.XkbInfo ();
- var layouts = info.get_all_layouts ();
- var occurrences = new Gee.HashMap<string, int> ();
-
- layouts.foreach ((name) => {
- string? short_name;
-
- info.get_layout_info (name, null, out short_name, null, null);
-
- var abbreviation = abbreviate (short_name);
- var has_abbreviation = abbreviation != null && ((!) abbreviation).get_char () != '\0';
-
- if (has_abbreviation) {
- if (!occurrences.has_key ((!) abbreviation)) {
- occurrences[(!) abbreviation] = 1;
- } else {
- occurrences[(!) abbreviation] = occurrences[(!) abbreviation] + 1;
- }
- }
- });
-
- string no_subscript_data;
- string with_subscript_data;
-
- try {
- uint8[] contents;
-
- var icon_x = 0.5 * (width - icon_width);
- var icon_y = 0.5 * (height - icon_height);
- var layout_font = @"font-family:$font;font-weight:$weight;font-size:$layout_size";
- var subscript_font = @"font-family:$font;font-weight:$weight;font-size:$subscript_size";
-
- File.new_for_path ((!) no_subscript_path).load_contents (null, out contents, null);
- no_subscript_data = (string) contents;
- no_subscript_data = no_subscript_data.replace ("@WIDTH@", @"$width");
- no_subscript_data = no_subscript_data.replace ("@HEIGHT@", @"$height");
- no_subscript_data = no_subscript_data.replace ("@ICON_X@", @"$icon_x");
- no_subscript_data = no_subscript_data.replace ("@ICON_Y@", @"$icon_y");
- no_subscript_data = no_subscript_data.replace ("@ICON_WIDTH@", @"$icon_width");
- no_subscript_data = no_subscript_data.replace ("@ICON_HEIGHT@", @"$icon_height");
- no_subscript_data = no_subscript_data.replace ("@RADIUS@", @"$radius");
- no_subscript_data = no_subscript_data.replace ("@COLOUR@", colour);
- no_subscript_data = no_subscript_data.replace ("@LAYOUT_FONT@", layout_font);
- no_subscript_data = no_subscript_data.replace ("@SUBSCRIPT_FONT@", subscript_font);
-
- File.new_for_path ((!) with_subscript_path).load_contents (null, out contents, null);
- with_subscript_data = (string) contents;
- with_subscript_data = with_subscript_data.replace ("@WIDTH@", @"$width");
- with_subscript_data = with_subscript_data.replace ("@HEIGHT@", @"$height");
- with_subscript_data = with_subscript_data.replace ("@ICON_X@", @"$icon_x");
- with_subscript_data = with_subscript_data.replace ("@ICON_Y@", @"$icon_y");
- with_subscript_data = with_subscript_data.replace ("@ICON_WIDTH@", @"$icon_width");
- with_subscript_data = with_subscript_data.replace ("@ICON_HEIGHT@", @"$icon_height");
- with_subscript_data = with_subscript_data.replace ("@RADIUS@", @"$radius");
- with_subscript_data = with_subscript_data.replace ("@COLOUR@", colour);
- with_subscript_data = with_subscript_data.replace ("@LAYOUT_FONT@", layout_font);
- with_subscript_data = with_subscript_data.replace ("@SUBSCRIPT_FONT@", subscript_font);
- } catch (Error error) {
- GLib.error ("error: %s", error.message);
- }
-
- var font_map = new PangoFT2.FontMap ();
- var layout_layout = new Pango.Layout (font_map.create_context ());
- var subscript_layout = new Pango.Layout (font_map.create_context ());
-
- var font_description = new Pango.FontDescription ();
- font_description.set_family (font);
- font_description.set_weight ((Pango.Weight) weight);
- font_description.set_size (layout_size * Pango.SCALE);
- layout_layout.set_font_description (font_description);
-
- font_description = new Pango.FontDescription ();
- font_description.set_family (font);
- font_description.set_weight ((Pango.Weight) weight);
- font_description.set_size (subscript_size * Pango.SCALE);
- subscript_layout.set_font_description (font_description);
-
- foreach (var entry in occurrences.entries) {
- var layout = entry.key;
- var count = entry.value;
- var file = File.new_for_path (@"$((!) output_path)/indicator-keyboard-$layout.svg");
-
- if (force || !file.query_exists (null)) {
- int layout_width;
- int layout_height;
-
- layout_layout.set_text (layout, -1);
- layout_layout.get_size (out layout_width, out layout_height);
- var layout_baseline = layout_layout.get_baseline ();
-
- var layout_x = 0.5 * (width - 1.0 * layout_width / Pango.SCALE);
- var layout_y = 0.5 * (height - 1.0 * layout_height / Pango.SCALE) + 1.0 * layout_baseline / Pango.SCALE;
-
- var output_data = no_subscript_data;
- output_data = output_data.replace ("@LAYOUT@", layout);
- output_data = output_data.replace ("@LAYOUT_X@", @"$layout_x");
- output_data = output_data.replace ("@LAYOUT_Y@", @"$layout_y");
- output_data = output_data.replace ("@SUBSCRIPT@", "");
- output_data = output_data.replace ("@SUBSCRIPT_X@", "0");
- output_data = output_data.replace ("@SUBSCRIPT_Y@", "0");
-
- try {
- file.replace_contents (output_data.data, null, false, FileCreateFlags.REPLACE_DESTINATION, null, null);
- } catch (Error error) {
- GLib.error ("error: %s", error.message);
- }
- }
-
- if (count > 1) {
- int layout_width;
- int layout_height;
-
- layout_layout.set_text (layout, -1);
- layout_layout.get_size (out layout_width, out layout_height);
- var layout_baseline = layout_layout.get_baseline ();
-
- var layout_y = 0.5 * (height - 1.0 * layout_height / Pango.SCALE) + 1.0 * layout_baseline / Pango.SCALE;
-
- var partial_data = with_subscript_data;
- partial_data = partial_data.replace ("@LAYOUT@", layout);
- partial_data = partial_data.replace ("@LAYOUT_Y@", @"$layout_y");
-
- for (var i = 1; i <= count; i++) {
- file = File.new_for_path (@"$((!) output_path)/indicator-keyboard-$layout-$i.svg");
-
- if (force || !file.query_exists (null)) {
- var subscript = @"$i";
- int subscript_width;
- int subscript_height;
-
- subscript_layout.set_text (subscript, -1);
- subscript_layout.get_size (out subscript_width, out subscript_height);
- var subscript_baseline = subscript_layout.get_baseline ();
-
- var layout_x = 0.5 * (width - 1.0 * (layout_width + subscript_width) / Pango.SCALE);
- var subscript_x = layout_x + 1.0 * layout_width / Pango.SCALE;
- var subscript_y = layout_y - 0.5 * subscript_height / Pango.SCALE + 1.0 * subscript_baseline / Pango.SCALE;
-
- var output_data = partial_data;
- output_data = output_data.replace ("@LAYOUT_X@", @"$layout_x");
- output_data = output_data.replace ("@LAYOUT_Y@", @"$layout_y");
- output_data = output_data.replace ("@SUBSCRIPT@", subscript);
- output_data = output_data.replace ("@SUBSCRIPT_X@", @"$subscript_x");
- output_data = output_data.replace ("@SUBSCRIPT_Y@", @"$subscript_y");
-
- try {
- file.replace_contents (output_data.data, null, false, FileCreateFlags.REPLACE_DESTINATION, null, null);
- } catch (Error error) {
- GLib.error ("error: %s", error.message);
- }
- }
- }
- }
- }
-
- return 0;
-}
diff --git a/data/icon.svg.in b/data/icon.svg.in
deleted file mode 100644
index 5e0dcbc8..00000000
--- a/data/icon.svg.in
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="@WIDTH@" height="@HEIGHT@"><defs><mask id="m"><rect x="0" y="0" width="@WIDTH@" height="@HEIGHT@" style="fill:white"/><text x="@LAYOUT_X@" y="@LAYOUT_Y@" style="@LAYOUT_FONT@;fill:black">@LAYOUT@</text></mask></defs><rect x="@ICON_X@" y="@ICON_Y@" width="@ICON_WIDTH@" height="@ICON_HEIGHT@" rx="@RADIUS@" mask="url(#m)" style="fill:@COLOUR@"/></svg>
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg
new file mode 100644
index 00000000..175706f7
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ak.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ak</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-am.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-am.svg
new file mode 100644
index 00000000..c04908a7
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-am.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="-0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Am</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg
new file mode 100644
index 00000000..a1b7017e
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ap.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ap</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg
new file mode 100644
index 00000000..35e6b648
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ar.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ar</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-as.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-as.svg
new file mode 100644
index 00000000..d605e746
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-as.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">As</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-av.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-av.svg
new file mode 100644
index 00000000..35ff04fb
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-av.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Av</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-az.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-az.svg
new file mode 100644
index 00000000..a51d569c
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-az.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Az</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-be.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-be.svg
new file mode 100644
index 00000000..dadc4d5c
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-be.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Be</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg
new file mode 100644
index 00000000..84cc83c2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-bg.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bg</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg
new file mode 100644
index 00000000..c094d92a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-bm.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="-0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bm</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg
new file mode 100644
index 00000000..24c41d64
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-bn.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bn</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-br.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-br.svg
new file mode 100644
index 00000000..92e7ccc3
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-br.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Br</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg
new file mode 100644
index 00000000..ba1a9e88
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-bs.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Bs</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-by.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-by.svg
new file mode 100644
index 00000000..3118da5b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-by.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">By</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg
new file mode 100644
index 00000000..23542658
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ca.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ca</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg
new file mode 100644
index 00000000..ac87bea2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ch.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ch</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg
new file mode 100644
index 00000000..61b89953
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-cm.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="-0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cm</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg
new file mode 100644
index 00000000..125bc583
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-cr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg
new file mode 100644
index 00000000..4a37213b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-cs.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Cs</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-da.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-da.svg
new file mode 100644
index 00000000..d2d5f579
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-da.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Da</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-de.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-de.svg
new file mode 100644
index 00000000..040aa311
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-de.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">De</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg
new file mode 100644
index 00000000..37436f1a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-dl.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Dl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg
new file mode 100644
index 00000000..7c81daba
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-dv.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Dv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg
new file mode 100644
index 00000000..7ae9aec1
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-dz.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Dz</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg
new file mode 100644
index 00000000..6b9d6454
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ee.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ee</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-en.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-en.svg
new file mode 100644
index 00000000..0e50ff79
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-en.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">En</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg
new file mode 100644
index 00000000..927ebf11
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-eo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Eo</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-es.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-es.svg
new file mode 100644
index 00000000..acabf044
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-es.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Es</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-et.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-et.svg
new file mode 100644
index 00000000..917ff2a3
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-et.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Et</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg
new file mode 100644
index 00000000..69b19223
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-eu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Eu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg
new file mode 100644
index 00000000..5fcf1ba2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-fa.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Fa</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg
new file mode 100644
index 00000000..62ec11e4
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ff.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ff</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg
new file mode 100644
index 00000000..e596b990
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-fi.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="6.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Fi</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg
new file mode 100644
index 00000000..8d931585
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-fo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Fo</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg
new file mode 100644
index 00000000..c28989cb
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-fr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Fr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg
new file mode 100644
index 00000000..a3a67be7
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ga.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ga</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg
new file mode 100644
index 00000000..e7b705a0
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-gr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Gr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg
new file mode 100644
index 00000000..9fd9728c
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-gu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Gu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg
new file mode 100644
index 00000000..0b0bfc7c
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ha.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ha</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-he.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-he.svg
new file mode 100644
index 00000000..ff361d9d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-he.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">He</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg
new file mode 100644
index 00000000..14e0b72a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-hi.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hi</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg
new file mode 100644
index 00000000..93d60ba8
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-hr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg
new file mode 100644
index 00000000..295d5f06
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-hu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hu</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg
new file mode 100644
index 00000000..fd3ff223
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-hy.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Hy</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-id.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-id.svg
new file mode 100644
index 00000000..74189fea
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-id.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Id</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg
new file mode 100644
index 00000000..77d899d2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ie.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ie</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg
new file mode 100644
index 00000000..810bf4b3
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ig.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ig</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg
new file mode 100644
index 00000000..0ac4c716
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ik.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ik</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-in.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-in.svg
new file mode 100644
index 00000000..35d431a5
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-in.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">In</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-is.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-is.svg
new file mode 100644
index 00000000..221b3800
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-is.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="6.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Is</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-it.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-it.svg
new file mode 100644
index 00000000..32ae3d21
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-it.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="7.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">It</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg
new file mode 100644
index 00000000..eb722bd6
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ja.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ja</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg
new file mode 100644
index 00000000..6e4e501e
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-jv.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Jv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg
new file mode 100644
index 00000000..5856d13a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ka.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ka</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg
new file mode 100644
index 00000000..c6b2108e
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ki.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ki</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg
new file mode 100644
index 00000000..672ed129
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-kk.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kk</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-km.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-km.svg
new file mode 100644
index 00000000..9980f46d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-km.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="-0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Km</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg
new file mode 100644
index 00000000..3394668b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-kn.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Kn</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg
new file mode 100644
index 00000000..d63470aa
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ko.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ko</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg
new file mode 100644
index 00000000..78ed6d89
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ku.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ku</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg
new file mode 100644
index 00000000..8ee50efd
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-lo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Lo</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg
new file mode 100644
index 00000000..5e879462
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-lt.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Lt</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg
new file mode 100644
index 00000000..391e55f4
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-lv.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Lv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-md.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-md.svg
new file mode 100644
index 00000000..8b4d4a2a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-md.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Md</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg
new file mode 100644
index 00000000..ed86b260
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-mi.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mi</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg
new file mode 100644
index 00000000..5a6b3b98
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-mk.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mk</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg
new file mode 100644
index 00000000..7c6d7d11
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ml.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ml</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg
new file mode 100644
index 00000000..695dced8
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-mn.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mn</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg
new file mode 100644
index 00000000..77eeae1a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-mr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg
new file mode 100644
index 00000000..8b08d301
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ms.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ms</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg
new file mode 100644
index 00000000..e6e7340b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-mt.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Mt</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-my.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-my.svg
new file mode 100644
index 00000000..f31cfa97
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-my.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">My</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg
new file mode 100644
index 00000000..934c2d07
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ne.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ne</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg
new file mode 100644
index 00000000..1f49af92
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-nl.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Nl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-no.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-no.svg
new file mode 100644
index 00000000..eb67598b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-no.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">No</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg
new file mode 100644
index 00000000..53a7afb4
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ol.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ol</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-or.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-or.svg
new file mode 100644
index 00000000..71c6050a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-or.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Or</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg
new file mode 100644
index 00000000..94548d50
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-pa.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Pa</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg
new file mode 100644
index 00000000..94c63e7a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ph.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ph</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg
new file mode 100644
index 00000000..280263e0
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-pl.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Pl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg
new file mode 100644
index 00000000..6ef25f86
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ps.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ps</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg
new file mode 100644
index 00000000..e7de86c9
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-pt.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Pt</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg
new file mode 100644
index 00000000..ff94c7c2
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ro.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ro</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg
new file mode 100644
index 00000000..930daccf
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ru.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ru</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg
new file mode 100644
index 00000000..332c2012
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sa.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sa</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg
new file mode 100644
index 00000000..488efb11
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sd.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sd</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg
new file mode 100644
index 00000000..164429b0
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sh.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sh</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-si.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-si.svg
new file mode 100644
index 00000000..dd9baca7
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-si.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Si</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg
new file mode 100644
index 00000000..f41e6a73
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sk.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sk</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg
new file mode 100644
index 00000000..494965ff
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sl.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sl</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg
new file mode 100644
index 00000000..4e88ab56
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sq.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sq</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg
new file mode 100644
index 00000000..30eb3949
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg
new file mode 100644
index 00000000..d9f3cb4d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sv.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sv</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg
new file mode 100644
index 00000000..998a3838
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sw.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sw</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg
new file mode 100644
index 00000000..7e929752
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-sy.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Sy</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg
new file mode 100644
index 00000000..79fe78f4
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ta.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ta</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-te.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-te.svg
new file mode 100644
index 00000000..973ffdaa
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-te.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Te</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg
new file mode 100644
index 00000000..d82a955f
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-tg.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Tg</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-th.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-th.svg
new file mode 100644
index 00000000..309f217b
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-th.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Th</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg
new file mode 100644
index 00000000..462819f3
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-tk.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Tk</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg
new file mode 100644
index 00000000..e46cf90d
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-tn.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Tn</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg
new file mode 100644
index 00000000..db0bb1f6
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-tr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Tr</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg
new file mode 100644
index 00000000..227e0acd
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-uf.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Uf</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg
new file mode 100644
index 00000000..d7054f37
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ug.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="1.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ug</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg
new file mode 100644
index 00000000..b3a81c05
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-uk.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Uk</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg
new file mode 100644
index 00000000..f85b6162
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-ur.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Ur</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-us.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-us.svg
new file mode 100644
index 00000000..7b622f7f
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-us.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Us</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg
new file mode 100644
index 00000000..66ca7443
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-uz.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Uz</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg
new file mode 100644
index 00000000..91a59b4e
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-vi.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="5.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Vi</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg
new file mode 100644
index 00000000..95d4ad6e
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-wo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="0.5" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Wo</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg
new file mode 100644
index 00000000..b16ddbd1
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-xs.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="3.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Xs</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg
new file mode 100644
index 00000000..fbf64462
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-yo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="4.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Yo</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg
new file mode 100644
index 00000000..f97e1aa1
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-zg.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Zg</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg b/data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg
new file mode 100644
index 00000000..00366a2a
--- /dev/null
+++ b/data/icons/scalable/status/ayatana-indicator-keyboard-zh.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="2.0" y="17.193359375" style="font-family:Sans Regular;font-weight:500;font-size:15;fill:black">Zh</text></mask></defs><rect x="0.0" y="0.0" width="24" height="24" rx="3" mask="url(#m)" style="fill:#ffffff"/></svg> \ No newline at end of file
diff --git a/data/org.ayatana.indicator.keyboard b/data/org.ayatana.indicator.keyboard
new file mode 100644
index 00000000..0af4084a
--- /dev/null
+++ b/data/org.ayatana.indicator.keyboard
@@ -0,0 +1,14 @@
+[Indicator Service]
+Name=ayatana-indicator-keyboard
+ObjectPath=/org/ayatana/indicator/keyboard
+Position=-10
+
+[phone]
+ObjectPath=/org/ayatana/indicator/keyboard/phone
+Position=25
+
+[desktop]
+ObjectPath=/org/ayatana/indicator/keyboard/desktop
+
+[desktop_greeter]
+ObjectPath=/org/ayatana/indicator/keyboard/desktop_greeter
diff --git a/data/org.ayatana.indicator.keyboard.gschema.xml b/data/org.ayatana.indicator.keyboard.gschema.xml
deleted file mode 100644
index 81ca4537..00000000
--- a/data/org.ayatana.indicator.keyboard.gschema.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<schemalist>
- <schema id="org.ayatana.indicator.keyboard" path="/org/ayatana/indicator/keyboard/">
- <key name="migrated" type="b">
- <summary>Keyboard layouts migrated</summary>
- <description>True if keyboard layouts were migrated, false otherwise.</description>
- <default>false</default>
- </key>
- <key name="visible" type="b">
- <summary>Keyboard indicator visibility</summary>
- <description>True if the keyboard indicator is shown, false otherwise.</description>
- <default>true</default>
- </key>
- </schema>
-</schemalist>
diff --git a/data/upstart/Makefile.am b/data/upstart/Makefile.am
deleted file mode 100644
index c762a603..00000000
--- a/data/upstart/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-###########################
-# Upstart XDG Override
-###########################
-
-xdg_autostartdir = $(datadir)/upstart/xdg/autostart
-xdg_autostart_DATA = ayatana-indicator-keyboard.desktop
-
-%.desktop: %.desktop.in
- $(AM_V_GEN) sed -e "s|\@pkglibexecdir\@|$(pkglibexecdir)|" $< > $@
-
-EXTRA_DIST = ayatana-indicator-keyboard.desktop.in
-
diff --git a/data/upstart/ayatana-indicator-keyboard.desktop.in b/data/upstart/ayatana-indicator-keyboard.desktop.in
deleted file mode 100644
index f20783be..00000000
--- a/data/upstart/ayatana-indicator-keyboard.desktop.in
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Ayatana Indicator Keyboard
-Exec=@pkglibexecdir@/ayatana-indicator-keyboard-service
-OnlyShowIn=Unity;
-NoDisplay=true
-StartupNotify=false
-Terminal=false
-Hidden=true
diff --git a/debian/ayatana-indicator-keyboard.links b/debian/ayatana-indicator-keyboard.links
new file mode 100644
index 00000000..d5f82959
--- /dev/null
+++ b/debian/ayatana-indicator-keyboard.links
@@ -0,0 +1,3 @@
+# Because dh-systemd does not support user units for compat levels below 12, we manually make the WantedBy link
+# FIXME: drop this once we bump DH compat level to 12 or higher
+/usr/lib/systemd/user/ayatana-indicator-keyboard.service /usr/lib/systemd/user/ayatana-indicators.target.wants/ayatana-indicator-keyboard.service
diff --git a/debian/control b/debian/control
index d5bf8862..118b0d57 100644
--- a/debian/control
+++ b/debian/control
@@ -1,36 +1,26 @@
Source: ayatana-indicator-keyboard
-Section: x11
+Section: misc
Priority: optional
-Maintainer: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
-Build-Depends: debhelper (>= 9),
- dbus,
+Uploaders:
+ Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+Build-Depends: cmake,
+ libglib2.0-dev (>= 2.36),
+ libx11-dev (>=1.7.0),
+ libxklavier-dev (>=5.4),
+# for packaging
+ debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
- fcitx-libs-dev (>= 1:4.2.8.3),
- gir1.2-fcitx-1.0,
- libaccountsservice-dev,
- libgee-0.8-dev | libgee-dev,
- libgirepository1.0-dev,
- libgnome-desktop-3-dev,
- libgnomekbd-dev,
- libgtk-3-dev,
- libibus-1.0-dev (>= 1.5.0),
- lightdm-vala | liblightdm-gobject-1-dev,
- valac,
- xauth,
- xvfb,
-Standards-Version: 4.1.1
+ intltool,
+# for systemd unit
+ systemd [linux-any],
+Standards-Version: 4.1.3
Homepage: https://github.com/AyatanaIndicators/ayatana-indicator-keyboard
Vcs-Git: https://github.com/AyatanaIndicators/ayatana-indicator-keyboard
Vcs-Browser: https://github.com/AyatanaIndicators/ayatana-indicator-keyboard
Package: ayatana-indicator-keyboard
Architecture: any
-Depends: ${misc:Depends},
- ${shlibs:Depends},
-Breaks: ibus (<< 1.5.5-1ubuntu3),
-Description: Ayatana Keyboard indicator
- This package contains the keyboard indicator, which should show as an
- icon in the top panel of indicator aware desktop environments.
- .
- It can be used to switch keyboard layouts or languages, and helps the
- user identifying which layouts are currently in use.
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ ayatana-indicator-common,
+Description: Ayatana Indicator Keyboard Applet
diff --git a/debian/copyright b/debian/copyright
index 8ad93a5c..ec42afba 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,30 +1,29 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: ayatana-indicator-keyboard
-Upstream-Contact: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
-Source: https://code.launchpad.net/indicator-keyboard
+Upstream-Contact: Robert Tari <robert@tari.in>
+Source: https://github.com/AyatanaIndicators/ayatana-indicator-keyboard
Files: *
-Copyright: 2013 Canonical Ltd.
-License: GPL-3
+Copyright: 2021, Robert Tari <robert@tari.in>
+License: GPL-3+
Files: debian/*
-Copyright: 2013 Canonical Ltd.
- 2017, Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
-License: GPL-3
+Copyright: 2021 Robert Tari <robert@tari.in>
+License: GPL-3+
-License: GPL-3
- This package is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; version 3 of the
- License.
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
- On Debian systems, the complete text of the GNU General Public
- License can be found in "/usr/share/common-licenses/GPL-3".
+ On Debian systems, the complete text of the GNU General
+ Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 00000000..50bd824b
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,2 @@
+NEWS
+README
diff --git a/debian/rules b/debian/rules
index 5da073ca..e7fca45d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -4,19 +4,22 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
+export DPKG_GENSYMBOLS_CHECK_LEVEL=4
+
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
-export DPKG_GENSYMBOLS_CHECK_LEVEL=4
-
%:
- dh $@
-
-override_dh_autoreconf:
- NOCONFIGURE=1 ./autogen.sh
+ dh $@ --with systemd
override_dh_install:
- find debian/ayatana-indicator-keyboard/usr/lib -name *.la -delete
- find debian/ayatana-indicator-keyboard/usr/lib -name *.a -delete
+ find debian/ayatana-indicator-keyboard -name \*.la -delete
+ find debian/ayatana-indicator-keyboard -name \*.a -delete
dh_install --fail-missing
+
+override_dh_installchangelogs:
+ dh_installchangelogs NEWS
+
+get-orig-source:
+ uscan --noconf --force-download --rename --download-current-version --destdir=..
diff --git a/debian/source/format b/debian/source/format
index d3827e75..9f8e9b69 100644
--- a/debian/source/format
+++ b/debian/source/format
@@ -1 +1 @@
-1.0
+1.0 \ No newline at end of file
diff --git a/deps/Fcitx-1.0.metadata b/deps/Fcitx-1.0.metadata
deleted file mode 100644
index 81c20f3c..00000000
--- a/deps/Fcitx-1.0.metadata
+++ /dev/null
@@ -1,7 +0,0 @@
-Client cheader_filename="fcitx-gclient/fcitxclient.h"
-Connection cheader_filename="fcitx-gclient/fcitxconnection.h"
-IMItem cheader_filename="fcitx-gclient/fcitxinputmethod.h"
-InputMethod cheader_filename="fcitx-gclient/fcitxinputmethod.h"
-Kbd cheader_filename="fcitx-gclient/fcitxkbd.h"
-LayoutItem cheader_filename="fcitx-gclient/fcitxkbd.h"
-PreeditItem cheader_filename="fcitx-gclient/fcitxclient.h"
diff --git a/deps/Gkbd-3.0.metadata b/deps/Gkbd-3.0.metadata
deleted file mode 100644
index 719af2fa..00000000
--- a/deps/Gkbd-3.0.metadata
+++ /dev/null
@@ -1,23 +0,0 @@
-Configuration cheader_filename="libgnomekbd/gkbd-configuration.h"
-Indicator cheader_filename="libgnomekbd/gkbd-indicator.h"
-KeyboardDrawing cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-Status cheader_filename="libgnomekbd/gkbd-status.h"
-DesktopConfig cheader_filename="libgnomekbd/gkbd-desktop-config.h"
-IndicatorConfig cheader_filename="libgnomekbd/gkbd-indicator-config.h"
-KeyboardConfig cheader_filename="libgnomekbd/gkbd-keyboard-config.h"
-KeyboardDrawingDoodad cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KeyboardDrawingGroupLevel cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KeyboardDrawingItem cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KeyboardDrawingKey cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KeyboardDrawingRenderContext cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KeyboardDrawingGroupLevelPosition cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KeyboardDrawingItemType cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-DESKTOP_SCHEMA cheader_filename="libgnomekbd/gkbd-desktop-config.h"
-KEYBOARD_DRAWING_H cheader_filename="libgnomekbd/gkbd-keyboard-drawing.h"
-KEYBOARD_SCHEMA cheader_filename="libgnomekbd/gkbd-keyboard-config.h"
-install_glib_log_appender cheader_filename="libgnomekbd/gkbd-util.h"
-preview_load_position cheader_filename="libgnomekbd/gkbd-util.h"
-preview_save_position cheader_filename="libgnomekbd/gkbd-util.h"
-strv_append cheader_filename="libgnomekbd/gkbd-util.h"
-strv_behead cheader_filename="libgnomekbd/gkbd-util.h"
-strv_remove cheader_filename="libgnomekbd/gkbd-util.h"
diff --git a/deps/GnomeDesktop-3.0.metadata b/deps/GnomeDesktop-3.0.metadata
deleted file mode 100644
index 3e4f88f4..00000000
--- a/deps/GnomeDesktop-3.0.metadata
+++ /dev/null
@@ -1 +0,0 @@
-RRScreen.new_async skip
diff --git a/deps/Xkl-1.0.metadata b/deps/Xkl-1.0.metadata
deleted file mode 100644
index 62226dbc..00000000
--- a/deps/Xkl-1.0.metadata
+++ /dev/null
@@ -1,19 +0,0 @@
-ConfigItem cheader_filename="libxklavier/xklavier.h"
-ConfigRec cheader_filename="libxklavier/xklavier.h"
-ConfigRegistry cheader_filename="libxklavier/xklavier.h"
-Engine cheader_filename="libxklavier/xklavier.h"
-State cheader_filename="libxklavier/xklavier.h"
-EngineFeatures cheader_filename="libxklavier/xklavier.h"
-EngineListenModes cheader_filename="libxklavier/xklavier.h"
-EngineStateChange cheader_filename="libxklavier/xklavier.h"
-ConfigItemProcessFunc cheader_filename="libxklavier/xklavier.h"
-TwoConfigItemsProcessFunc cheader_filename="libxklavier/xklavier.h"
-MAX_CI_DESC_LENGTH cheader_filename="libxklavier/xklavier.h"
-MAX_CI_NAME_LENGTH cheader_filename="libxklavier/xklavier.h"
-MAX_CI_SHORT_DESC_LENGTH cheader_filename="libxklavier/xklavier.h"
-get_country_name cheader_filename="libxklavier/xklavier.h"
-get_language_name cheader_filename="libxklavier/xklavier.h"
-get_last_error cheader_filename="libxklavier/xklavier.h"
-restore_names_prop cheader_filename="libxklavier/xklavier.h"
-set_debug_level cheader_filename="libxklavier/xklavier.h"
-Engine.filter_events.evt type="X.Event"
diff --git a/m4/gcov.m4 b/m4/gcov.m4
deleted file mode 100644
index 31635840..00000000
--- a/m4/gcov.m4
+++ /dev/null
@@ -1,86 +0,0 @@
-# Checks for existence of coverage tools:
-# * gcov
-# * lcov
-# * genhtml
-# * gcovr
-#
-# Sets ac_cv_check_gcov to yes if tooling is present
-# and reports the executables to the variables LCOV, GCOVR and GENHTML.
-AC_DEFUN([AC_TDD_GCOV],
-[
- AC_ARG_ENABLE(gcov,
- AS_HELP_STRING([--enable-gcov],
- [enable coverage testing with gcov]),
- [use_gcov=$enableval], [use_gcov=no])
-
- if test "x$use_gcov" = "xyes"; then
- # we need gcc:
- if test "$GCC" != "yes"; then
- AC_MSG_ERROR([GCC is required for --enable-gcov])
- fi
-
- # Check if ccache is being used
- AC_CHECK_PROG(SHTOOL, shtool, shtool)
- case `$SHTOOL path $CC` in
- *ccache*[)] gcc_ccache=yes;;
- *[)] gcc_ccache=no;;
- esac
-
- if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
- AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
- fi
-
- lcov_version_list="1.6 1.7 1.8 1.9"
- AC_CHECK_PROG(LCOV, lcov, lcov)
- AC_CHECK_PROG(GENHTML, genhtml, genhtml)
-
- if test "$LCOV"; then
- AC_CACHE_CHECK([for lcov version], glib_cv_lcov_version, [
- glib_cv_lcov_version=invalid
- lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
- for lcov_check_version in $lcov_version_list; do
- if test "$lcov_version" = "$lcov_check_version"; then
- glib_cv_lcov_version="$lcov_check_version (ok)"
- fi
- done
- ])
- else
- lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list"
- AC_MSG_ERROR([$lcov_msg])
- fi
-
- case $glib_cv_lcov_version in
- ""|invalid[)]
- lcov_msg="You must have one of the following versions of lcov: $lcov_version_list (found: $lcov_version)."
- AC_MSG_ERROR([$lcov_msg])
- LCOV="exit 0;"
- ;;
- esac
-
- if test -z "$GENHTML"; then
- AC_MSG_ERROR([Could not find genhtml from the lcov package])
- fi
-
- ac_cv_check_gcov=yes
- ac_cv_check_lcov=yes
-
- # Remove all optimization flags from CFLAGS
- changequote({,})
- CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
- changequote([,])
-
- # Add the special gcc flags
- COVERAGE_CFLAGS="-O0 -fprofile-arcs -ftest-coverage"
- COVERAGE_CXXFLAGS="-O0 -fprofile-arcs -ftest-coverage"
- COVERAGE_LDFLAGS="-lgcov"
-
- # Check availability of gcovr
- AC_CHECK_PROG(GCOVR, gcovr, gcovr)
- if test -z "$GCOVR"; then
- ac_cv_check_gcovr=no
- else
- ac_cv_check_gcovr=yes
- fi
-
-fi
-]) # AC_TDD_GCOV
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644
index 00000000..0b2b2a12
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,6 @@
+find_package(Intltool REQUIRED)
+
+intltool_install_translations(
+ ALL
+ GETTEXT_PACKAGE ${GETTEXT_PACKAGE}
+)
diff --git a/po/LINGUAS b/po/LINGUAS
index 4cfdf5eb..95d5c5a6 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -115,11 +115,11 @@ wae
zh_CN
zh_HK
zh_TW
+ny
aa
-wo
as
+wo
gv
-ny
fur
it_CARES
dv
diff --git a/po/Makevars b/po/Makevars
new file mode 100644
index 00000000..18ed9571
--- /dev/null
+++ b/po/Makevars
@@ -0,0 +1,5 @@
+DOMAIN = $(PACKAGE)
+subdir = po
+top_builddir = ..
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=UTF-8
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0e297a3d..b4c52343 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,3 +1,5 @@
-data/org.ayatana.indicator.keyboard.gschema.xml
-lib/main.vala
-lib/indicator-menu.vala
+src/main.c
+src/keyboard.c
+src/keyboard.h
+src/service.c
+src/service.h
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index cb832ddf..e69de29b 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,2 +0,0 @@
-lib/main.c
-lib/indicator-menu.c
diff --git a/po/aa.po b/po/aa.po
index e96ec786..21957736 100644
--- a/po/aa.po
+++ b/po/aa.po
@@ -1,35 +1,29 @@
-# Afar translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Afar translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-11-11 05:47+0000\n"
-"PO-Revision-Date: 2015-04-05 19:00+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Afar <aa@li.org>\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: aa\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s satqô raceyna"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Wari Karta"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Maftacî rakih Bislenta"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Kawsenti Ukumtoh Kobotto..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/af.po b/po/af.po
index 45e3b175..9b77ba99 100644
--- a/po/af.po
+++ b/po/af.po
@@ -1,36 +1,29 @@
-# Afrikaans translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Afrikaans translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-08-28 13:32+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Afrikaans <af@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: af\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s toevoerbron"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Karakterkaart"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Sleutelborduitlegkaart"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Teksinvoerinstellings…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/am.po b/po/am.po
index 41262529..37b2da2e 100644
--- a/po/am.po
+++ b/po/am.po
@@ -1,36 +1,29 @@
-# Amharic translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Amharic translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-01-18 22:57+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Amharic <am@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: am\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s የማስገቢያ ምንጭ"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "የባህሪ ካርታ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "የፊደል ገበታ እቅድ ካርታ"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "የ ጽሁፍ ማስገቢያ ማሰናጃዎች..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/an.po b/po/an.po
index 3b4264ee..30d6f6d5 100644
--- a/po/an.po
+++ b/po/an.po
@@ -1,14 +1,14 @@
-# Aragonese translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Aragonese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: an\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ar.po b/po/ar.po
index f8978a2c..61d19aae 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -1,36 +1,29 @@
-# Arabic translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Arabic translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-10 03:47+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Arabic <ar@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "مصدر الإدخال %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "خريطة المحارف"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "رسمة تخطيط لوحة المفاتيح"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "إعدادات إدخال النص..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/as.po b/po/as.po
index f4baada8..85a07cb8 100644
--- a/po/as.po
+++ b/po/as.po
@@ -1,38 +1,29 @@
-# Assamese translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Assamese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-11-11 05:47+0000\n"
-"PO-Revision-Date: 2019-12-27 13:21+0000\n"
-"Last-Translator: Mohsin Ali <mohsin13089@gmail.com>\n"
-"Language-Team: Assamese <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/as/>\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: as\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.10\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ইনপুট উৎস"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "অক্ষৰৰ তালিকা"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "কী-ব'ৰ্ড লে'আউটৰ তালিকা"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "পাঠ প্ৰবিষ্ট ছেটিংছ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ast.po b/po/ast.po
index e2cbfc5c..e3c46fbd 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -1,36 +1,29 @@
-# Asturian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Asturian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-03 15:38+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Asturian <ast@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ast\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Orixe d'entrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caráuteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Distribución del tecláu"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Configuración d'entrada de testu…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ayatana-indicator-keyboard.pot b/po/ayatana-indicator-keyboard.pot
index 946469bc..d8eee1e5 100644
--- a/po/ayatana-indicator-keyboard.pot
+++ b/po/ayatana-indicator-keyboard.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,19 +17,14 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/az.po b/po/az.po
index a31dfa01..00a23b6a 100644
--- a/po/az.po
+++ b/po/az.po
@@ -1,36 +1,29 @@
-# Azerbaijani translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Azerbaijani translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-12 21:01+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Azerbaijani <az@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: az\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s giriş mənbəyi"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Simvol Xəritəsi"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Klaviatura Düzülüş Qrafiki"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Mətn Daxiletmə Tənzimləmələri..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/be.po b/po/be.po
index 8088ac63..33ff4cbf 100644
--- a/po/be.po
+++ b/po/be.po
@@ -1,39 +1,31 @@
-# Belarusian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Belarusian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-13 18:44+0000\n"
-"Last-Translator: Viktar Vauchkevich <victorenator@gmail.com>\n"
-"Language-Team: Belarusian <https://hosted.weblate.org/projects/ayatana-"
-"indicators/keyboard-applet/be/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: be\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\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 2.17\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\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"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s прылада для друку"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Мапа сімвалаў"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Паглядзець раскладку"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Налады ўвода тэксту…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/bem.po b/po/bem.po
index 7713ca62..90500d50 100644
--- a/po/bem.po
+++ b/po/bem.po
@@ -1,14 +1,14 @@
-# Bemba translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Bemba translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: bem\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/bg.po b/po/bg.po
index e14aaf61..a37e60fc 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,36 +1,30 @@
-# Bulgarian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Bulgarian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-11-13 14:40+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Bulgarian <bg@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Входен източник %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Таблица със знаци"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Схема на клавиатурната подредба"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Параметри за въвеждане на текста..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/bn.po b/po/bn.po
index 57396d40..2dd35d48 100644
--- a/po/bn.po
+++ b/po/bn.po
@@ -1,38 +1,29 @@
-# Bengali translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Bengali translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2020-10-17 09:26+0000\n"
-"Last-Translator: Yota321 <golamsayan@gmail.com>\n"
-"Language-Team: Bengali <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/bn/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: bn\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.3.1-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s input source"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "বর্ণ - সংকেত মানচিত্র"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "কীবোর্ড লেআউট চার্ট"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "পাঠ্য প্রবেশের সেটিংস ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/bo.po b/po/bo.po
index 1caed808..c3bfcb74 100644
--- a/po/bo.po
+++ b/po/bo.po
@@ -1,14 +1,14 @@
-# Tibetan translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Tibetan translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: bo\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/br.po b/po/br.po
index ad778178..4b4dd11e 100644
--- a/po/br.po
+++ b/po/br.po
@@ -1,36 +1,29 @@
-# Breton translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Breton translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-11-07 15:08+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Breton <br@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: br\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s orin an enankad"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Kartenn an arrouezennoù"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Neuz aozadur ar c'hlavier"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Arventennoù ar reiñ testennoù"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/bs.po b/po/bs.po
index 1feee1bd..a4f82c20 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -1,36 +1,29 @@
-# Bosnian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Bosnian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 15:43+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Bosnian <bs@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: bs\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ulazni izvor"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa znakova"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Crtež rasporeda tastature"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Postavke unosa teksta..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ca.po b/po/ca.po
index cbd4eb1b..fbef7f7d 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,36 +1,29 @@
-# Catalan translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Catalan translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-19 10:24+0000\n"
-"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
-"Language-Team: Catalan <ca@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Font d'entrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caràcters"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Disposició del teclat"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Paràmetres d'entrada de text…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ca@valencia.po b/po/ca@valencia.po
index f9629760..21ce8d97 100644
--- a/po/ca@valencia.po
+++ b/po/ca@valencia.po
@@ -1,36 +1,29 @@
-# Catalan (Valencian) translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Catalan translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-04-12 06:11+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Catalan (Valencian) <ca@valencia@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ca@valencia\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Font d'entrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caràcters"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Disposició del teclat"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Paràmetres d'entrada de text…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ce.po b/po/ce.po
index 0cec60bc..76ae07e0 100644
--- a/po/ce.po
+++ b/po/ce.po
@@ -1,36 +1,29 @@
-# Chechen translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Chechen translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-08-08 12:43+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Chechen <ce@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ce\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ckb.po b/po/ckb.po
index 0f2ccc37..89e4c1a9 100644
--- a/po/ckb.po
+++ b/po/ckb.po
@@ -1,36 +1,29 @@
-# Kurdish (Sorani) translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Language ckb translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-06-22 06:34+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ckb\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/co.po b/po/co.po
index fc31d9d8..38a340bf 100644
--- a/po/co.po
+++ b/po/co.po
@@ -1,14 +1,14 @@
-# Corsican translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Corsican translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: co\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/crh.po b/po/crh.po
index fda1e233..ebff64f2 100644
--- a/po/crh.po
+++ b/po/crh.po
@@ -1,14 +1,14 @@
-# Crimean Tatar translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Crimean Tatar translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: crh\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/cs.po b/po/cs.po
index e5959644..3726ef4c 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,38 +1,30 @@
-# Czech translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Czech translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-04-04 14:35+0000\n"
-"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
-"Language-Team: Czech <https://hosted.weblate.org/projects/ayatana-indicators/"
-"keyboard-applet/cs/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Weblate 2.20-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s vstupní zdroj"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa znaků"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Mapa rozložení klávesnice"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Nastavení zadávání textu…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/csb.po b/po/csb.po
index 2bc62817..b62f00dd 100644
--- a/po/csb.po
+++ b/po/csb.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Kashubian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: csb\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/cv.po b/po/cv.po
index fdc2c89f..75d70a22 100644
--- a/po/cv.po
+++ b/po/cv.po
@@ -1,14 +1,14 @@
-# Chuvash translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Chuvash translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: cv\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/cy.po b/po/cy.po
index ddb58a51..ec8ea235 100644
--- a/po/cy.po
+++ b/po/cy.po
@@ -1,36 +1,29 @@
-# Welsh translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Welsh translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-08 00:05+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Welsh <cy@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: cy\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "ffynhonell mewnbwn %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Map Nodau"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Siart Cynllun Bysellfwrdd"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Gosodiadau Cofnodi Testun..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/da.po b/po/da.po
index 81156585..51b7fab8 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,36 +1,30 @@
-# Danish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Danish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 10:32+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Danish <da@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: da\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s-inputkilde"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tegnoversigt"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Oversigt over tastaturlayout"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Indstillinger for tekstfelt..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/de.po b/po/de.po
index d1df46f4..360b2d8e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,36 +1,30 @@
-# German translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# German translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 11:11+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: German <de@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s-Eingabequelle"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Zeichentabelle"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Abbild der Tastaturbelegung"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Texteingabe-Einstellungen …"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/dv.po b/po/dv.po
index 037c2f01..417bdb91 100644
--- a/po/dv.po
+++ b/po/dv.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Divehi translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: dv\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/el.po b/po/el.po
index 878af43b..8b55e085 100644
--- a/po/el.po
+++ b/po/el.po
@@ -1,36 +1,30 @@
-# Greek translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Greek translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 11:42+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Greek <el@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: el\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s πηγή εισόδου"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Καθορισμός χαρακτήρων"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Διάγραμμα διάταξης πληκτρολογίου"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Ρυθμίσεις εισαγωγής κειμένου..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/en_AU.po b/po/en_AU.po
index 3182160a..0fa6e049 100644
--- a/po/en_AU.po
+++ b/po/en_AU.po
@@ -1,36 +1,30 @@
-# English (Australia) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# English translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-07 23:11+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: English (Australia) <en_AU@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: en_AU\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr "Keyboard"
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr "Current keyboard layout"
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Keyboard Layout Chart"
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr "Keyboard Settings..."
diff --git a/po/en_CA.po b/po/en_CA.po
index ddeffae0..48ebe6e0 100644
--- a/po/en_CA.po
+++ b/po/en_CA.po
@@ -1,36 +1,30 @@
-# English (Canada) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# English translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-12 10:07+0000\n"
-"Last-Translator: William Hua <Unknown>\n"
-"Language-Team: English (Canada) <en_CA@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: en_CA\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr "Keyboard"
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr "Current keyboard layout"
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Keyboard Layout Chart"
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr "Keyboard Settings..."
diff --git a/po/en_GB.po b/po/en_GB.po
index d843a9c8..940aee83 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -1,36 +1,30 @@
-# English (United Kingdom) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# English translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-29 15:56+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: en_GB\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr "Keyboard"
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr "Current keyboard layout"
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Keyboard Layout Chart"
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr "Keyboard Settings..."
diff --git a/po/eo.po b/po/eo.po
index 18060247..a707f588 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,36 +1,30 @@
-# Esperanto translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Esperanto translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-04-01 00:15+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Esperanto <eo@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s enigfonto"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Signomapo"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Klavara Aranĝdiagramo"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Teksteniga Agordoj..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/es.po b/po/es.po
index c532c37a..11b02884 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,36 +1,30 @@
-# Spanish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Spanish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-05-03 00:16+0000\n"
-"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
-"Language-Team: Spanish <es@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Fuente de entrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caracteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Ver distribución del teclado"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Configuración de entrada de texto…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/et.po b/po/et.po
index 41466d47..f89b5c89 100644
--- a/po/et.po
+++ b/po/et.po
@@ -1,36 +1,30 @@
-# Estonian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Estonian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 15:17+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Estonian <et@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: et\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s sisendallikas"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Märgikaart"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Klaviatuuripaigutuse skeem"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Tekstisisestamise seaded..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/eu.po b/po/eu.po
index 3a2bc94f..d0ebff07 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -1,36 +1,29 @@
-# Basque translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Basque translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-01 20:51+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Basque <eu@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s sarrera-iturria"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Karaktere-mapa"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Teklatuaren diseinuaren mapa"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Testu-sarreraren ezarpenak"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/fa.po b/po/fa.po
index 4b179135..7f4e6d92 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -1,36 +1,29 @@
-# Persian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Persian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-11-01 05:30+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Persian <fa@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s منبع ورودی"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "نقشهٔ نویسه"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "نمودار چینش صفحه‌کلید"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "تنظیمات ورودی متن…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/fi.po b/po/fi.po
index 92871093..1e05cd40 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,36 +1,30 @@
-# Finnish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Finnish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-03 09:43+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Finnish <fi@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Syötelähde %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Merkkikartta"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Näppäimistön asettelu"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Tekstisyötteen asetukset..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/fil.po b/po/fil.po
index f2aa49a6..0e43c81d 100644
--- a/po/fil.po
+++ b/po/fil.po
@@ -1,14 +1,14 @@
-# Filipino translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Filipino translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: fil\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/fo.po b/po/fo.po
index 19755f6c..b4275294 100644
--- a/po/fo.po
+++ b/po/fo.po
@@ -1,36 +1,30 @@
-# Faroese translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Faroese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-11-05 22:46+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Faroese <fo@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: fo\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s íkastarkelda"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Stavkort"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Knappaborðsuppsetingarkort"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Tekstinnskrivingastillingar"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 27dd68fa..8a1ce7ce 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,36 +1,30 @@
-# French translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# French translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-08-29 08:33+0000\n"
-"Last-Translator: Matthieu Baerts <matttbe@gmail.com>\n"
-"Language-Team: French <fr@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s source d'entrée"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Table de caractères"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Agencement du clavier"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Paramètres de saisie de texte..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/fr_CA.po b/po/fr_CA.po
index 11517e9a..84a2323b 100644
--- a/po/fr_CA.po
+++ b/po/fr_CA.po
@@ -1,38 +1,30 @@
-# French (Canada) translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# French translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2020-04-28 11:11+0000\n"
-"Last-Translator: Jeannette L <j.lavoie@net-c.ca>\n"
-"Language-Team: French (Canada) <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/fr_CA/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: fr_CA\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.0.2\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s source d'entrée"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Table de caractères"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Affichage de l'agencement du clavier"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Paramètres de saisie de texte..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/frp.po b/po/frp.po
index ab1a193f..0e21fc21 100644
--- a/po/frp.po
+++ b/po/frp.po
@@ -1,14 +1,14 @@
-# Language frp translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Language frp translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: frp\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/fur.po b/po/fur.po
index 85ec5f7a..38832f15 100644
--- a/po/fur.po
+++ b/po/fur.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Friulian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/fy.po b/po/fy.po
index 3ca33d00..4753a6c4 100644
--- a/po/fy.po
+++ b/po/fy.po
@@ -1,14 +1,14 @@
-# Western Frisian translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Western Frisian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: fy\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ga.po b/po/ga.po
index 175a0ef8..62609c46 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -1,36 +1,30 @@
-# Irish translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Irish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-02-27 15:27+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Irish <ga@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ga\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s foinse an ionchuir"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa Carachtar"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Cairt Leagan Amach an an Méarchláir"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Socruithe iontráil téacs"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/gd.po b/po/gd.po
index 0867c0a3..cb0e5265 100644
--- a/po/gd.po
+++ b/po/gd.po
@@ -1,36 +1,29 @@
-# Gaelic; Scottish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Scottish Gaelic translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-30 10:02+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Gaelic; Scottish <gd@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: gd\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Tùs ion-chur %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa nan caractaran"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Cairt co-dhealbhachd a' mheur-chlàir"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Roghainnean ion-chur teacsa..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/gl.po b/po/gl.po
index 76cc6ec0..24ad2eea 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -1,38 +1,29 @@
-# Galician translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Galician translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-10-24 16:29+0000\n"
-"Last-Translator: Iván Seoane <ivanrsm1997@gmail.com>\n"
-"Language-Team: Galician <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/gl/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Orixe da entrada: %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa dos caracteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Ollar disposición do teclado"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Axustes da entrada do texto..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/gu.po b/po/gu.po
index 2a861c1e..5a2c4a68 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -1,14 +1,14 @@
-# Gujarati translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Gujarati translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: gu\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/gv.po b/po/gv.po
index 84bc0238..411c5123 100644
--- a/po/gv.po
+++ b/po/gv.po
@@ -1,35 +1,29 @@
-# Manx translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Manx translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-11-11 05:47+0000\n"
-"PO-Revision-Date: 2015-04-02 15:55+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Manx <gv@li.org>\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: gv\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s bun y chur-stiagh"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Caslys Karacteyr"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Caslys Lhie Magh y Vair-Chlaare"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Soieaghyn Cur-Stiagh Teks..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/he.po b/po/he.po
index d3d1eeb1..3340fcc9 100644
--- a/po/he.po
+++ b/po/he.po
@@ -1,36 +1,30 @@
-# Hebrew translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Hebrew translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-01 12:03+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Hebrew <he@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: he\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "מקור קלט %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "מפת תווים"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "תרשים פריסת המקלדת"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "הגדרות הזנת טקסט…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/hi.po b/po/hi.po
index 16fc4c93..21871816 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -1,36 +1,29 @@
-# Hindi translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Hindi translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 21:49+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Hindi <hi@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: hi\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s निवेश स्त्रोत"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "अक्षर तालिका"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "कुंजीपट विन्यास तालिका"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "शब्द प्रविष्टि समायोजन..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/hr.po b/po/hr.po
index 4c4e8a73..5dd5221f 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,36 +1,31 @@
-# Croatian translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Croatian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-12-06 05:41+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Croatian <hr@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\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"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ulazni izvor"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tablica znakova"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Raspored tipkovnice"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Postavke upisa..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ht.po b/po/ht.po
index ad1613e0..9344db22 100644
--- a/po/ht.po
+++ b/po/ht.po
@@ -1,14 +1,14 @@
-# Haitian translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Haitian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ht\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/hu.po b/po/hu.po
index 3d9f2abe..ee9677d1 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,36 +1,30 @@
-# Hungarian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Hungarian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-04 18:45+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Hungarian <hu@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s beviteli forrás"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Karaktertábla"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Billentyűzetkiosztás"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Szövegbeviteli beállítások…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/hy.po b/po/hy.po
index 123315ed..ea834900 100644
--- a/po/hy.po
+++ b/po/hy.po
@@ -1,38 +1,29 @@
-# Armenian translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Armenian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-03-01 01:34+0000\n"
-"Last-Translator: Мира Странная <miraityan2004@gmail.com>\n"
-"Language-Team: Armenian <https://hosted.weblate.org/projects/ayatana-"
-"indicators/keyboard-applet/hy/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: hy\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 2.20-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s մուտքագրման աղբյուր"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Գրանշանների քարտեզ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Ստեղնաշարի դասավորության կառուցվածքը"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Տեքստի մուտքագրման պարամետրերը..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ia.po b/po/ia.po
index c487b84a..26afbffa 100644
--- a/po/ia.po
+++ b/po/ia.po
@@ -1,36 +1,29 @@
-# Interlingua translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Interlingua translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-04-27 11:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Interlingua <ia@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ia\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s fonte de input"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mappa del characteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Plano del arrangiamento del claviero"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Optiones del entratas de texto"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/id.po b/po/id.po
index f79cf319..8fd2aff2 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,36 +1,29 @@
-# Indonesian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Indonesian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-11-12 16:23+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Indonesian <id@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: id\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s sumber masukan"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Peta Karakter"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Bagan Tata Letak Papan Ketik"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Pengaturan Pemasukan Teks"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/is.po b/po/is.po
index a1e9799f..b155d055 100644
--- a/po/is.po
+++ b/po/is.po
@@ -1,38 +1,29 @@
-# Icelandic translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Icelandic translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-01-24 12:17+0000\n"
-"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
-"Language-Team: Icelandic <https://hosted.weblate.org/projects/ayatana-"
-"indicators/keyboard-applet/is/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: is\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11;\n"
-"X-Generator: Weblate 2.19-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s inntak"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Stafatafla"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Mynd af framsetningu lyklaborðs"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Stillingar fyrir innsetningu texta..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/it.po b/po/it.po
index 3736fb86..022ac3a3 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,36 +1,30 @@
-# Italian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Italian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-12 11:02+0000\n"
-"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
-"Language-Team: Italian <it@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Sorgente di input %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tabella caratteri"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Disposizione tastiera"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Impostazioni inserimento testo..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/it_CARES.po b/po/it_CARES.po
index 89f95895..f32d2731 100644
--- a/po/it_CARES.po
+++ b/po/it_CARES.po
@@ -1,34 +1,30 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Italian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: it_CARES\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ja.po b/po/ja.po
index d702e9a2..9476356e 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,36 +1,30 @@
-# Japanese translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Japanese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-29 07:25+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Japanese <ja@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s 入力ソース"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "文字マップ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "キーボードレイアウト表"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "テキスト入力設定..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ka.po b/po/ka.po
index 4cd3acb1..754899af 100644
--- a/po/ka.po
+++ b/po/ka.po
@@ -1,14 +1,14 @@
-# Georgian translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Georgian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ka\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/kk.po b/po/kk.po
index 2e0b5be9..3226162a 100644
--- a/po/kk.po
+++ b/po/kk.po
@@ -1,37 +1,29 @@
-# Kazakh translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Kazakh translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2019-02-24 19:17+0000\n"
-"Last-Translator: WWWesten <wwwesten@gmail.com>\n"
-"Language-Team: Kazakh <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/kk/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.5-dev\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s kiris kózi"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tańba kartasy"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Pernetaqta ornalasý kestesi"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Mátin engizý parametrleri..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/kl.po b/po/kl.po
index 74f9fc76..844358d3 100644
--- a/po/kl.po
+++ b/po/kl.po
@@ -1,14 +1,14 @@
-# Kalaallisut translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Kalaallisut translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: kl\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/km.po b/po/km.po
index a76f0ad2..fab146a4 100644
--- a/po/km.po
+++ b/po/km.po
@@ -1,36 +1,29 @@
-# Khmer translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Central Khmer translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-17 01:42+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Khmer <km@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: km\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "ប្រភព​បញ្ចូល %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "ផែនទី​តួអក្សរ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "តារាង​ប្លង់​ក្ដារចុច"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "ការ​កំណត់​ធាតុ​អត្ថបទ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/kn.po b/po/kn.po
index 3e7ec35b..f92c3374 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -1,36 +1,29 @@
-# Kannada translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Kannada translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-16 11:18+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Kannada <kn@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: kn\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ಇನ್‌ಪುಟ್ ಮೂಲ"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "ಅಕ್ಷರ ನಕ್ಷೆ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ ಪಟ್ಟಿ"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "ಪಠ್ಯ ನಮೂದಿಸುವ ಸಂಯೋಜನೆಗಳು ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ko.po b/po/ko.po
index 62b64680..8d2f4cb5 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,36 +1,30 @@
-# Korean translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Korean translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-01 10:55+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Korean <ko@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "입력 소스 %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "문자 표"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "키보드 배치 표"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "텍스트 입력창 설정..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ku.po b/po/ku.po
index 9559e162..6d105a52 100644
--- a/po/ku.po
+++ b/po/ku.po
@@ -1,14 +1,14 @@
-# Kurdish translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Kurdish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ku\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/kw.po b/po/kw.po
index 3ee7eb53..b21ea162 100644
--- a/po/kw.po
+++ b/po/kw.po
@@ -1,14 +1,14 @@
-# Cornish translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Cornish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: kw\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ky.po b/po/ky.po
index 4c4accd1..1bfad731 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -1,14 +1,14 @@
-# Kirghiz translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Kirghiz translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ky\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/la.po b/po/la.po
index 7d4542f8..1e1f922a 100644
--- a/po/la.po
+++ b/po/la.po
@@ -1,14 +1,14 @@
-# Latin translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Latin translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: la\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/lb.po b/po/lb.po
index b7660b64..92011267 100644
--- a/po/lb.po
+++ b/po/lb.po
@@ -1,36 +1,29 @@
-# Luxembourgish translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Letzeburgesch translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-05-31 16:13+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Luxembourgish <lb@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: lb\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s-Agafquell"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Zeechentabell"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Ofbild vun der Tastaurbeleeung"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Textagaf-Astellungen"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/lo.po b/po/lo.po
index b2d2c252..1c3e7b45 100644
--- a/po/lo.po
+++ b/po/lo.po
@@ -1,36 +1,29 @@
-# Lao translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Laotian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-07-24 13:30+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Lao <lo@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: lo\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/lt.po b/po/lt.po
index d0fb77b2..5cfabc86 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -1,36 +1,31 @@
-# Lithuanian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Lithuanian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-08-30 14:47+0000\n"
-"Last-Translator: Aurimas Fišeras <Unknown>\n"
-"Language-Team: Lithuanian <lt@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s įvesties šaltinis"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Simbolių lentelė"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Klaviatūros klavišų išdėstymas"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Teksto įvedimo nustatymai..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/lv.po b/po/lv.po
index 9246c766..2869f3b8 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -1,36 +1,31 @@
-# Latvian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Latvian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-03 15:03+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Latvian <lv@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ievades avots"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Rakstzīmju tabula"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Klaviatūras Izkārtojuma Tabula"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Teksta Ievades Iestatījumi..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/mg.po b/po/mg.po
index 577a0c99..2857ed33 100644
--- a/po/mg.po
+++ b/po/mg.po
@@ -1,36 +1,29 @@
-# Malagasy translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Malagasy translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-04-12 05:12+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Malagasy <mg@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: mg\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s fango iditra"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Tabilao famaritana ny fitendry"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Parametatry ny fampidiran-tsoratra"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/mhr.po b/po/mhr.po
index 551715d1..c4acf87b 100644
--- a/po/mhr.po
+++ b/po/mhr.po
@@ -1,36 +1,29 @@
-# Mari (Meadow) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Language mhr translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-12-10 07:43+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Mari (Meadow) <mhr@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: mhr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Ӱжвата-влак"
-
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Полдышоҥа Радам График"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Текстым Келыштараш..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/mi.po b/po/mi.po
index 9c354b22..0a5552a6 100644
--- a/po/mi.po
+++ b/po/mi.po
@@ -1,36 +1,29 @@
-# Maori translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Maori translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-05-19 20:25+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Maori <mi@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: mi\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/mk.po b/po/mk.po
index 8fe2b578..f9a38d36 100644
--- a/po/mk.po
+++ b/po/mk.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Macedonian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: mk\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ml.po b/po/ml.po
index 04836045..c083c730 100644
--- a/po/ml.po
+++ b/po/ml.po
@@ -1,36 +1,29 @@
-# Malayalam translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Malayalam translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-12-29 06:40+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Malayalam <ml@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ml\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ഇന്‍പുട്ട് ഉറവിടം"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "അക്ഷരങ്ങളുടെ പട്ടിക"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "കീബോഡ് ലേയൗട്ട് പട്ടിക"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "പദാവലി നല്‍കല്‍ സജ്ജീകരണങ്ങള്‍..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/mr.po b/po/mr.po
index c26a2c31..01a0914c 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -1,38 +1,29 @@
-# Marathi translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Marathi translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2020-03-18 17:36+0000\n"
-"Last-Translator: Prachi Joshi <josprachi@yahoo.com>\n"
-"Language-Team: Marathi <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/mr/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: mr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s मजकूर प्रवेशाचे उगम"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "अक्षर नकाशा"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "कळफलकाचा तक्ता"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "मजकूर प्रवेश सेटिंग्ज ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ms.po b/po/ms.po
index 785781d9..173ec850 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -1,38 +1,29 @@
-# Malay translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Malay translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-17 08:47+0000\n"
-"Last-Translator: Michal Čihař <michal@cihar.com>\n"
-"Language-Team: Malay <https://hosted.weblate.org/projects/ayatana-indicators"
-"/keyboard-applet/ms/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ms\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.17\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s sumber input"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Peta Aksara"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Carta Bentanga Papan Kekunci"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Tetapan Masukan Teks..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/my.po b/po/my.po
index a20a573f..b4bdeb08 100644
--- a/po/my.po
+++ b/po/my.po
@@ -1,38 +1,29 @@
-# Burmese translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Burmese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2020-07-31 04:41+0000\n"
-"Last-Translator: Sithu Aung <sithu.aung015@gmail.com>\n"
-"Language-Team: Burmese <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/my/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: my\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.2-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ထည့်သွင်း ရင်းမြစ်"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "အက္ခရာ မြေပုံ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "ကီးဘုတ် လက်ကွက် ဇယား"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "စာသား ရိုက်ထည့် အပြင်အဆင်များ ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/nb.po b/po/nb.po
index aafe4c09..7ca24657 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,36 +1,30 @@
-# Norwegian Bokmal translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Norwegian Bokmal translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-07 09:55+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Norwegian Bokmal <nb@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s inndatakilde"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tegnkart"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Kart over tastaturoppsett"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Innstillinger for tekstskriving …"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ne.po b/po/ne.po
index b6340f4f..f178ba18 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -1,36 +1,29 @@
-# Nepali translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Nepali translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-01-08 09:58+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Nepali <ne@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ne\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s इनपुट स्रोत"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "चरित्र नक्शा"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "कुञ्जीपाटी लेआउट चार्ट"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "पाठ प्रविष्टि सेटिङ ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
index c506fb82..b6bb4288 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,36 +1,30 @@
-# Dutch translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Dutch translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-30 07:20+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Dutch <nl@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s invoerbron"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tekens en symbolen"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Toetsenbordindelingoverzicht"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Tekstinvoerinstellingen…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/nn.po b/po/nn.po
index 851e303e..1f476b82 100644
--- a/po/nn.po
+++ b/po/nn.po
@@ -1,14 +1,14 @@
-# Norwegian Nynorsk translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Norwegian Nynorsk translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: nn\n"
@@ -17,19 +17,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ny.po b/po/ny.po
index 1d4df1d5..38c33455 100644
--- a/po/ny.po
+++ b/po/ny.po
@@ -1,35 +1,29 @@
-# Chewa; Chichewa; Nyanja translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Nyanja translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-11-11 05:47+0000\n"
-"PO-Revision-Date: 2015-03-09 10:38+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Chewa; Chichewa; Nyanja <ny@li.org>\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ny\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ikani chiyambi"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "mapu a malemba"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Kasanjidwe kamakiyi"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Khonzekeletsa kalowetsedwe kamalemba"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/oc.po b/po/oc.po
index 7ba34c66..b9a924ed 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -1,38 +1,29 @@
-# Occitan (post 1500) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Occitan translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2020-09-26 17:40+0000\n"
-"Last-Translator: Quentin PAGÈS <quentinantonin@free.fr>\n"
-"Language-Team: Occitan <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/oc/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: oc\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.3-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Agençament : %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Taula de caractèrs"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Representacion de l'agençament"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Paramètres d'agençament…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/os.po b/po/os.po
index 5aea645a..7876bb85 100644
--- a/po/os.po
+++ b/po/os.po
@@ -1,14 +1,14 @@
-# Ossetian translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Ossetian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: os\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/pa.po b/po/pa.po
index d1700813..48e3386c 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -1,36 +1,29 @@
-# Punjabi translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Punjabi translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-02-02 00:07+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Punjabi <pa@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: pa\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ਇੰਪੁੱਟ ਗਲਤੀ"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "ਅੱਖਰ ਖਾਕਾ"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "ਕੀਬੋਰਡ ਖਾਕਾ ਚਾਰਟ"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "ਟੈਕਸਟ ਐਂਟਰੀ ਸੈਟਿੰਗ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 2fa4e6ac..776b33c0 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,39 +1,31 @@
-# Polish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Polish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-08-24 17:42+0000\n"
-"Last-Translator: WaldiS <admin@sto.ugu.pl>\n"
-"Language-Team: Polish <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/pl/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.2-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Metoda wprowadzania: %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Tablica znaków"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Podgląd układu klawiatury"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Ustawienia wprowadzania znaków..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ps.po b/po/ps.po
index f13babe5..baad893a 100644
--- a/po/ps.po
+++ b/po/ps.po
@@ -1,14 +1,14 @@
-# Pashto translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Pashto translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ps\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/pt.po b/po/pt.po
index e3b4e9f1..b6f1c4a6 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,38 +1,30 @@
-# Portuguese translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Portuguese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-11-19 07:07+0000\n"
-"Last-Translator: ssantos <ssantos@web.de>\n"
-"Language-Team: Portuguese <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/pt/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "fonte de entrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caracteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Gráfico de layout de teclado"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Definições de entrada de texto..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 0c9127a0..bc6c1956 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,36 +1,30 @@
-# Brazilian Portuguese translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Portuguese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-08-28 01:25+0000\n"
-"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
-"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "fonte de entrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caracteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Disposição do teclado"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Configurações de entrada de texto…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ro.po b/po/ro.po
index 4b96778f..e9ccc283 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,36 +1,31 @@
-# Romanian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Romanian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-30 07:42+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Romanian <ro@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s sursă de intrare"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Hartă caractere"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Element grafic pentru harta de caractere"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Configurări introducere text..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ru.po b/po/ru.po
index 3574210e..bbdc7c6c 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,36 +1,31 @@
-# Russian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Russian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-12 22:02+0000\n"
-"Last-Translator: Igor Zubarev <igor.zubarev@gmail.com>\n"
-"Language-Team: Russian <ru@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\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"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Источник ввода %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Таблица символов"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Схема раскладки клавиатуры"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Параметры ввода текста..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sa.po b/po/sa.po
index d8caaf82..799fdc16 100644
--- a/po/sa.po
+++ b/po/sa.po
@@ -1,36 +1,29 @@
-# Sanskrit translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Sanskrit translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-06-06 09:29+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Sanskrit <sa@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sa\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s निवेशस्रोतः"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "अक्षरगणः"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "कीलफलकविधानम्"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "पाठ्यनिवेशसंरूपणम्..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sc.po b/po/sc.po
index 7c43d59f..28d16964 100644
--- a/po/sc.po
+++ b/po/sc.po
@@ -1,37 +1,29 @@
-# Sardinian translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Sardinian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2020-10-27 14:36+0000\n"
-"Last-Translator: Adrià Martín <adriamartinmor@gmail.com>\n"
-"Language-Team: Sardinian <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/sc/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sc\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.3.2-dev\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Orìgine de intrada %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa de caràteres"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Dispositzione de su tecladu"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Cunfiguratzione de intrada de testu..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sd.po b/po/sd.po
index 98344397..8d0e7338 100644
--- a/po/sd.po
+++ b/po/sd.po
@@ -1,14 +1,14 @@
-# Sindhi translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Sindhi translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: sd\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/se.po b/po/se.po
index 4f9b3697..89d981ce 100644
--- a/po/se.po
+++ b/po/se.po
@@ -1,14 +1,14 @@
-# Northern Sami translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Northern Sami translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: se\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/shn.po b/po/shn.po
index 3feb9606..491efcbe 100644
--- a/po/shn.po
+++ b/po/shn.po
@@ -1,14 +1,14 @@
-# Shan translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Shan translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: shn\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/si.po b/po/si.po
index 53fd3118..470a07bd 100644
--- a/po/si.po
+++ b/po/si.po
@@ -1,36 +1,29 @@
-# Sinhalese translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Sinhala translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-31 17:57+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Sinhalese <si@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: si\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ආදාන මූලාශ්‍රය"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "අක්‍ෂර සිතියම"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "යතුරුපුවරු වින්‍යාස සිතියම"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "වදන් ඇතුලත් කිරීම සැකසීම්..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sk.po b/po/sk.po
index ffb49d00..585dbb9c 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,36 +1,30 @@
-# Slovak translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Slovak translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-02 13:04+0000\n"
-"Last-Translator: Pavol Klačanský <pavol@klacansky.com>\n"
-"Language-Team: Slovak <sk@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "zdroj vstupu %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Mapa znakov"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Rozloženie klávesnice"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Nastavenia vstupu…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sl.po b/po/sl.po
index 6329bb32..b05fd3bb 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -1,36 +1,31 @@
-# Slovenian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Slovenian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-27 18:24+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Slovenian <sl@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+"%100==4 ? 2 : 3);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s vir vnosa"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Preglednica znakov"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Prikaz razporeditve tipk"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Nastavitve vnosa besedila ..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sq.po b/po/sq.po
index 34ea27a2..7934de13 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -1,36 +1,29 @@
-# Albanian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Albanian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 13:40+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Albanian <sq@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sq\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s burim hyrjeje"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Harta e Simboleve"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Harta e Daljes së Tastierës"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Parametrat e Hyrjes së Tekstit..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sr.po b/po/sr.po
index 1eae4c4f..ed754eed 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,36 +1,31 @@
-# Serbian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Serbian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-06-21 11:10+0000\n"
-"Last-Translator: Иван Благојевић <ivan_blagojevic@mail.com>\n"
-"Language-Team: Serbian <sr@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\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"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s извор уноса"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Таблица знакова"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Графикон распореда тастатуре"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Подешавања уноса текста..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sv.po b/po/sv.po
index 3a17deaa..debddad8 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,38 +1,30 @@
-# Swedish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Swedish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2018-03-30 21:41+0000\n"
-"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
-"Language-Team: Swedish <https://hosted.weblate.org/projects/"
-"ayatana-indicators/keyboard-applet/sv/>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.20-dev\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s inmatningskälla"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Teckenuppsättning"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Tangentbordsschema"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Inställningar för textinmatning…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/sw.po b/po/sw.po
index 16777529..47cd9847 100644
--- a/po/sw.po
+++ b/po/sw.po
@@ -1,14 +1,14 @@
-# Swahili translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Swahili translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: sw\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/szl.po b/po/szl.po
index 299b0ec5..16faa466 100644
--- a/po/szl.po
+++ b/po/szl.po
@@ -1,36 +1,29 @@
-# Silesian translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Language szl translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-03-05 16:03+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Silesian <szl@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: szl\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ta.po b/po/ta.po
index 9d229082..3dd38091 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -1,36 +1,29 @@
-# Tamil translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Tamil translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-25 01:48+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Tamil <ta@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: ta\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s உள்ளீடு மூலம்"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "எழுத்து வரைபடம்"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "விசைப்பலகை வரைபடம்"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "உரை நுழைவு அமைப்புகள்..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ta_LK.po b/po/ta_LK.po
index 1cdadbc2..4ef41696 100644
--- a/po/ta_LK.po
+++ b/po/ta_LK.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Tamil translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ta_LK\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/te.po b/po/te.po
index aeb7b3cb..656fc8a6 100644
--- a/po/te.po
+++ b/po/te.po
@@ -1,36 +1,29 @@
-# Telugu translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Telugu translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2015-04-10 07:29+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Telugu <te@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: te\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s ఇన్పుట్ మూలం"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "అక్షర పటము"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "కీబోర్డ్ లేఔట్ పటము"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "పాఠ్య చొప్పింత అమరికలు..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/tg.po b/po/tg.po
index fd8483bd..696d800c 100644
--- a/po/tg.po
+++ b/po/tg.po
@@ -1,36 +1,29 @@
-# Tajik translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Tajik translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 14:41+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Tajik <tg@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: tg\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Манбаи вуруди %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Тарҳбандии аломатҳо"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Аломатҳои тарҳбандии клавиатура"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Танзимоти вуруди матн..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/th.po b/po/th.po
index d6cd7331..34c13bd1 100644
--- a/po/th.po
+++ b/po/th.po
@@ -1,36 +1,29 @@
-# Thai translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Thai translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-02-23 02:50+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Thai <th@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: th\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ti.po b/po/ti.po
index 2e4e9498..243d0318 100644
--- a/po/ti.po
+++ b/po/ti.po
@@ -1,14 +1,14 @@
-# Tigrinya translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Tigrinya translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ti\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/tr.po b/po/tr.po
index 66e3239c..c59fd840 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,36 +1,30 @@
-# Turkish translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Turkish translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-28 21:34+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Turkish <tr@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s girdi kaynağı"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Karakter Haritası"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Klavye Düzeni Şeması"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Metin Girdisi Ayarları..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/tt.po b/po/tt.po
index fa54b1c6..c08faf6d 100644
--- a/po/tt.po
+++ b/po/tt.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Tatar translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: tt\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/ug.po b/po/ug.po
index 044b1f75..dbdd1132 100644
--- a/po/ug.po
+++ b/po/ug.po
@@ -1,36 +1,29 @@
-# Uyghur translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Uighur translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-30 06:50+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Uyghur <ug@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ug\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s كىرگۈزۈش مەنبەسى"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "ھەرپ-بەلگە جەدۋىلى"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "ھەرپتاختا ئورۇنلاشتۇرۇش كۆرۈنۈشى"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "تېكىست كىرگۈزۈش تەڭشەكلىرى…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/uk.po b/po/uk.po
index e9a9bccb..f23674c2 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,36 +1,31 @@
-# Ukrainian translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Ukrainian translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-09-27 17:20+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Ukrainian <uk@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\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"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "Джерело введення %s"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Таблиця символів"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Таблиця розкладки клавіатури"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Параметри введення тексту…"
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/ur.po b/po/ur.po
index 19cc6391..fc282a96 100644
--- a/po/ur.po
+++ b/po/ur.po
@@ -1,14 +1,14 @@
-# Urdu translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Urdu translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ur\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/uz.po b/po/uz.po
index a32e100d..7989e25c 100644
--- a/po/uz.po
+++ b/po/uz.po
@@ -1,36 +1,29 @@
-# Uzbek translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Uzbek translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-04-20 13:20+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Uzbek <uz@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: uz\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s киритиш манбаси"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Белгилар Харитаси"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Клавиатура Белгилари Жадвали"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Текст киритиш мосламалари..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/vec.po b/po/vec.po
index 97348e09..8ef438da 100644
--- a/po/vec.po
+++ b/po/vec.po
@@ -1,34 +1,29 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Language vec translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: vec\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/vi.po b/po/vi.po
index eb526595..1c50f54d 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,36 +1,30 @@
-# Vietnamese translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Vietnamese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-16 11:12+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Vietnamese <vi@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s nguồn đầu vào"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Sơ đồ kí tự"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Biểu đồ Bố cục Bàn phím"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Thiết đặt nhập văn bản..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/wae.po b/po/wae.po
index 23c24477..9646343a 100644
--- a/po/wae.po
+++ b/po/wae.po
@@ -1,14 +1,14 @@
-# Language wae translations for ayatana-indicator-keyboard package.
-# Copyright (C) 2017 THE ayatana-indicator-keyboard'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the ayatana-indicator-keyboard package.
-# Automatically generated, 2017.
+# Language wae translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: ayatana-indicator-keyboard 0.1.0\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2017-10-12 08:02+0200\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: wae\n"
@@ -16,19 +16,14 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
+#: ../src/service.c:63
+msgid "Keyboard"
msgstr ""
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr ""
-
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
msgstr ""
diff --git a/po/wo.po b/po/wo.po
index 0fbd87f4..ef25004b 100644
--- a/po/wo.po
+++ b/po/wo.po
@@ -1,35 +1,29 @@
-# Wolof translation for indicator-keyboard
-# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+# Wolof translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-11-11 05:47+0000\n"
-"PO-Revision-Date: 2015-10-22 09:05+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Wolof <wo@li.org>\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: wo\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s gongikuwaayu duggiit"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "Àlluwab mandarga"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "Tëddiinu arafukaay"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "Jekkali duggalug mbind..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
index b7b2077a..b212f015 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,36 +1,29 @@
-# Chinese (Simplified) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Chinese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-03 12:50+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s 输入源"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "字符映射表"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "键盘布局图"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "文本输入设置..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/zh_HK.po b/po/zh_HK.po
index c34a540b..693a8525 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -1,36 +1,29 @@
-# Chinese (Hong Kong) translation for indicator-keyboard
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+# Chinese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2014-01-26 14:12+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
"Language: zh_HK\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s 輸入來源"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "字元對應表"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "鍵盤佈局圖"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "文字輸入設定..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 33b4d4c4..dbfefd7a 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,36 +1,29 @@
-# Chinese (Traditional) translation for indicator-keyboard
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the indicator-keyboard package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+# Chinese translations for PACKAGE package.
+# Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: indicator-keyboard\n"
+"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 08:02+0200\n"
-"PO-Revision-Date: 2013-10-14 14:50+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2021-01-22 23:28+0100\n"
+"PO-Revision-Date: 2021-01-22 23:28+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: zh_TW\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2015-11-12 05:36+0000\n"
-"X-Generator: Launchpad (build 17843)\n"
-#: ../lib/main.vala:814
-#, c-format
-msgid "%s input source"
-msgstr "%s 輸入來源"
-
-#: ../lib/indicator-menu.vala:54
-msgid "Character Map"
-msgstr "字元對應表"
+#: ../src/service.c:63
+msgid "Keyboard"
+msgstr ""
-#: ../lib/indicator-menu.vala:55
-msgid "Keyboard Layout Chart"
-msgstr "鍵盤配置圖"
+#: ../src/service.c:74
+msgid "Current keyboard layout"
+msgstr ""
-#: ../lib/indicator-menu.vala:56
-msgid "Text Entry Settings..."
-msgstr "文字輸入設定..."
+#: ../src/service.c:131
+msgid "Keyboard Settings..."
+msgstr ""
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 00000000..3eb7caf9
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 2.8.12)
+set (SERVICE_LIB "ayatanaindicatorkeyboardservice")
+set (SERVICE_EXEC "ayatana-indicator-keyboard-service")
+
+add_definitions(-DG_LOG_DOMAIN="ayatana-indicator-keyboard")
+
+# handwritten sources
+set(SERVICE_MANUAL_SOURCES keyboard.c service.c utils.c)
+
+# generated sources
+set(SERVICE_GENERATED_SOURCES)
+
+# add the bin dir to our include path so the code can find the generated header files
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+# add warnings/coverage info on handwritten files but not the autogenerated ones...
+set_source_files_properties(${SERVICE_MANUAL_SOURCES} PROPERTIES COMPILE_FLAGS "${C_WARNING_ARGS} -g -std=c99")
+
+# the service library for tests to link against (basically, everything except main())
+add_library(${SERVICE_LIB} STATIC ${SERVICE_MANUAL_SOURCES} ${SERVICE_GENERATED_SOURCES})
+include_directories(${CMAKE_SOURCE_DIR})
+link_directories(${SERVICE_DEPS_LIBRARY_DIRS})
+
+# the executable: lib + main()
+add_executable (${SERVICE_EXEC} main.c)
+set_source_files_properties(${SERVICE_SOURCES} main.c PROPERTIES COMPILE_FLAGS "${C_WARNING_ARGS} -std=c99")
+target_link_libraries (${SERVICE_EXEC} ${SERVICE_LIB} ${SERVICE_DEPS_LIBRARIES})
+install (TARGETS ${SERVICE_EXEC} RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_PKGLIBEXECDIR})
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index a0fc4bb5..00000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,55 +0,0 @@
-pkglibexec_PROGRAMS = ayatana-indicator-keyboard-service
-
-AM_CFLAGS = -w -DGNOME_DESKTOP_USE_UNSTABLE_API
-AM_LDFLAGS = -lm
-AM_VALAFLAGS = --enable-experimental-non-null \
- --metadatadir $(top_srcdir)/deps \
- --vapidir $(top_srcdir)/deps
-
-ayatana_indicator_keyboard_service_SOURCES = main.vala \
- source.vala \
- common.vala \
- ibus-menu.vala \
- ibus-panel.vala \
- indicator-menu.vala \
- keyboard-plugin.vala \
- window-stack.vala \
- unity-session.vala \
- unity-greeter.vala
-ayatana_indicator_keyboard_service_VALAFLAGS = $(AM_VALAFLAGS) \
- --pkg gee-1.0 \
- --pkg posix \
- --pkg pangocairo \
- --pkg gtk+-3.0 \
- --pkg GDesktopEnums-3.0 \
- --pkg GnomeDesktop-3.0 \
- --pkg Xkl-1.0 \
- --pkg Gkbd-3.0 \
- --pkg ibus-1.0 \
- --pkg Fcitx-1.0 \
- --pkg AccountsService-1.0 \
- --pkg liblightdm-gobject-1
-ayatana_indicator_keyboard_service_CFLAGS = $(AM_CFLAGS) \
- $(GEE_CFLAGS) \
- $(PANGOCAIRO_CFLAGS) \
- $(GTK_CFLAGS) \
- $(GNOME_DESKTOP_CFLAGS) \
- $(LIBXKLAVIER_CFLAGS) \
- $(LIBGNOMEKBD_CFLAGS) \
- $(IBUS_CFLAGS) \
- $(FCITX_GCLIENT_CFLAGS) \
- $(ACCOUNTSSERVICE_CFLAGS) \
- $(LIGHTDM_CFLAGS) \
- $(COVERAGE_CFLAGS)
-ayatana_indicator_keyboard_service_LDFLAGS = $(AM_LDFLAGS) \
- $(GEE_LIBS) \
- $(PANGOCAIRO_LIBS) \
- $(GTK_LIBS) \
- $(GNOME_DESKTOP_LIBS) \
- $(LIBXKLAVIER_LIBS) \
- $(LIBGNOMEKBD_LIBS) \
- $(IBUS_LIBS) \
- $(FCITX_GCLIENT_LIBS) \
- $(ACCOUNTSSERVICE_LIBS) \
- $(LIGHTDM_LIBS) \
- $(COVERAGE_LDFLAGS)
diff --git a/src/common.vala b/src/common.vala
deleted file mode 100644
index 9824bc26..00000000
--- a/src/common.vala
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-string? abbreviate (string? name) {
- var index = 0;
- unichar first;
- unichar second;
-
- if (name != null) {
- if (((!) name).get_next_char (ref index, out first)) {
- if (((!) name).get_next_char (ref index, out second)) {
- return @"$((!) first.toupper ().to_string ())$((!) second.to_string ())";
- } else {
- return first.toupper ().to_string ();
- }
- } else {
- return "";
- }
- } else {
- return null;
- }
-}
diff --git a/src/ibus-menu.vala b/src/ibus-menu.vala
deleted file mode 100644
index a240f00b..00000000
--- a/src/ibus-menu.vala
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright 2014 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-public class Indicator.Keyboard.IBusMenu : MenuModel {
-
- private static uint radio_counter = 0;
-
- private IBus.PropList? properties;
-
- private Menu menu;
- private ActionMap? action_map;
-
- private string? radio_name;
- private SimpleAction? radio_action;
- private Gee.HashMap<string, IBus.Property> radio_properties;
-
- /* A list of the action names this menu registers. */
- private Gee.LinkedList<string> names;
-
- public IBusMenu (ActionMap? action_map = null, IBus.PropList? properties = null) {
- menu = new Menu ();
-
- menu.items_changed.connect ((position, removed, added) => {
- items_changed (position, removed, added);
- });
-
- names = new Gee.LinkedList<string> ();
- set_action_map (action_map);
- set_properties (properties);
- }
-
- ~IBusMenu () {
- remove_actions ();
- }
-
- public signal void activate (IBus.Property property, IBus.PropState state);
-
- private string get_action_name (string key) {
- string name;
-
- if (!action_name_is_valid (key)) {
- var builder = new StringBuilder.sized (key.length + 1);
-
- unichar letter = 0;
- int index = 0;
-
- while (key.get_next_char (ref index, out letter)) {
- if (letter == '-' || letter == '.' || letter.isalnum ()) {
- builder.append_unichar (letter);
- } else {
- builder.append_c ('-');
- }
- }
-
- name = @"ibus-$(builder.str)";
- } else {
- name = @"ibus-$key";
- }
-
- /* Find an unused action name using a counter. */
- if (action_map != null && (Action?) ((!) action_map).lookup_action (name) != null) {
- var i = 0;
- var unique_name = @"$name-$i";
-
- while ((Action?) ((!) action_map).lookup_action (unique_name) != null) {
- i++;
- unique_name = @"$name-$i";
- }
-
- name = unique_name;
- }
-
- return name;
- }
-
- private string? get_label (IBus.Property property) {
- string? label = null;
-
- if ((IBus.Text?) property.label != null) {
- label = property.label.text;
- }
-
- if (label == null && (IBus.Text?) property.symbol != null) {
- label = property.symbol.text;
- }
-
- return label;
- }
-
- private void append_normal_property (IBus.Property property) {
- if (property.prop_type == IBus.PropType.NORMAL) {
- if ((string?) property.key != null) {
- var name = get_action_name (property.key);
-
- if (action_map != null) {
- var action = new SimpleAction (name, null);
- action.activate.connect ((parameter) => { activate (property, property.state); });
- ((!) action_map).add_action (action);
- names.add (name);
- }
-
- menu.append (get_label (property), property.sensitive ? @"indicator.$name" : "-private-disabled");
- }
- }
- }
-
- private void append_toggle_property (IBus.Property property) {
- if (property.prop_type == IBus.PropType.TOGGLE) {
- if ((string?) property.key != null) {
- var name = get_action_name (property.key);
-
- if (action_map != null) {
- var state = new Variant.boolean (property.state == IBus.PropState.CHECKED);
- var action = new SimpleAction.stateful (name, null, state);
-
- action.change_state.connect ((value) => {
- if (value != null) {
- action.set_state ((!) value);
- activate (property, ((!) value).get_boolean () ? IBus.PropState.CHECKED : IBus.PropState.UNCHECKED);
- }
- });
-
- ((!) action_map).add_action (action);
- names.add (name);
- }
-
- menu.append (get_label (property), property.sensitive ? @"indicator.$name" : "-private-disabled");
- }
- }
- }
-
- private void append_radio_property (IBus.Property property) {
- if (property.prop_type == IBus.PropType.RADIO) {
- if ((string?) property.key != null) {
- /* Create a single action for all radio properties. */
- if (action_map != null && radio_name == null) {
- radio_counter++;
-
- var name = @"-private-radio-$radio_counter";
- var action = new SimpleAction.stateful (name, VariantType.STRING, new Variant.string (""));
-
- action.change_state.connect ((value) => {
- if (value != null) {
- var key = ((!) value).get_string ();
-
- if (radio_properties.has_key (key)) {
- action.set_state ((!) value);
- activate (radio_properties[key], IBus.PropState.CHECKED);
- }
- }
- });
-
- ((!) action_map).add_action (action);
- names.add (name);
-
- radio_name = name;
- radio_action = action;
- }
-
- radio_properties[property.key] = property;
-
- if (property.state == IBus.PropState.CHECKED) {
- ((!) radio_action).change_state (new Variant.string (property.key));
- }
-
- var item = new MenuItem (get_label (property), "-private-disabled");
-
- if (property.sensitive) {
- item.set_action_and_target_value (@"indicator.$((!) radio_name)", new Variant.string (property.key));
- }
-
- menu.append_item (item);
- }
- }
- }
-
- private void append_menu_property (IBus.Property property) {
- if (property.prop_type == IBus.PropType.MENU) {
- var submenu = new IBusMenu (action_map, property.sub_props);
- submenu.activate.connect ((property, state) => { activate (property, state); });
- menu.append_submenu (get_label (property), submenu);
- }
- }
-
- private void append_property (IBus.Property? property) {
- if (property != null && ((!) property).visible) {
- switch (((!) property).prop_type) {
- case IBus.PropType.NORMAL:
- append_normal_property ((!) property);
- break;
-
- case IBus.PropType.TOGGLE:
- append_toggle_property ((!) property);
- break;
-
- case IBus.PropType.RADIO:
- append_radio_property ((!) property);
- break;
-
- case IBus.PropType.MENU:
- append_menu_property ((!) property);
- break;
-
- case IBus.PropType.SEPARATOR:
- break;
- }
- }
- }
-
- private void update_menu () {
- /* Break reference cycle between action map and submenus. */
- for (var i = 0; i < menu.get_n_items (); i++) {
- var submenu = menu.get_item_link (i, Menu.LINK_SUBMENU) as IBusMenu;
-
- if (submenu != null) {
- ((!) submenu).remove_actions ();
- }
- }
-
- menu.remove_all ();
-
- if (properties != null) {
- for (var i = 0; i < ((!) properties).properties.length; i++) {
- append_property (((!) properties).get (i));
- }
- }
- }
-
- private void remove_actions () {
- radio_action = null;
- radio_name = null;
-
- if (action_map != null) {
- foreach (var name in names) {
- ((!) action_map).remove_action (name);
- }
- }
-
- names.clear ();
- }
-
- public void set_action_map (ActionMap? action_map) {
- if (action_map != this.action_map) {
- remove_actions ();
- this.action_map = action_map;
- update_menu ();
- }
- }
-
- public void set_properties (IBus.PropList? properties) {
- if (properties != this.properties) {
- remove_actions ();
- radio_properties = new Gee.HashMap<string, IBus.Property> ();
- this.properties = properties;
- update_menu ();
- }
- }
-
- public void update_property (IBus.Property property) {
- remove_actions ();
- radio_properties = new Gee.HashMap<string, IBus.Property> ();
- update_menu ();
- }
-
- /* Forward all menu model calls to our internal menu. */
-
- public override Variant get_item_attribute_value (int item_index, string attribute, VariantType? expected_type) {
- return menu.get_item_attribute_value (item_index, attribute, expected_type);
- }
-
- public override void get_item_attributes (int item_index, out HashTable<string, Variant>? attributes) {
- menu.get_item_attributes (item_index, out attributes);
- }
-
- public override MenuModel get_item_link (int item_index, string link) {
- return menu.get_item_link (item_index, link);
- }
-
- public override void get_item_links (int item_index, out HashTable<string, MenuModel> links) {
- menu.get_item_links (item_index, out links);
- }
-
- public override int get_n_items () {
- return menu.get_n_items ();
- }
-
- public override bool is_mutable () {
- return menu.is_mutable ();
- }
-
- public override MenuAttributeIter iterate_item_attributes (int item_index) {
- return menu.iterate_item_attributes (item_index);
- }
-
- public override MenuLinkIter iterate_item_links (int item_index) {
- return menu.iterate_item_links (item_index);
- }
-}
diff --git a/src/ibus-panel.vala b/src/ibus-panel.vala
deleted file mode 100644
index 2a380efd..00000000
--- a/src/ibus-panel.vala
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2014 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-[DBus (name="org.ayatana.IBus.Panel.Private")]
-public interface IBusPanel : Object {
-
- public abstract void activate_property (string name, uint state) throws IOError;
-
- public signal void properties_registered (Variant variant);
- public signal void property_updated (Variant variant);
-}
diff --git a/src/indicator-menu.vala b/src/indicator-menu.vala
deleted file mode 100644
index 2cfa52c6..00000000
--- a/src/indicator-menu.vala
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 2014 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-public class Indicator.Keyboard.IndicatorMenu : MenuModel {
-
- public enum Options {
- NONE = 0,
- DCONF = 1 << 0,
- XKB = 1 << 1,
- IBUS = 1 << 2,
- SETTINGS = 1 << 3
- }
-
- private Options options;
-
- private Menu indicator_menu;
- private Menu sources_section;
- private IBusMenu properties_section;
-
- public IndicatorMenu (ActionMap? action_map = null, Options options = Options.NONE) {
- this.options = options;
-
- indicator_menu = new Menu ();
- sources_section = new Menu ();
-
- if ((options & ~Options.DCONF) != Options.NONE) {
- var submenu = new Menu ();
-
- submenu.append_section (null, sources_section);
-
- if (Options.IBUS in options) {
- properties_section = new IBusMenu (action_map);
- properties_section.activate.connect ((property, state) => { activate (property, state); });
- submenu.append_section (null, properties_section);
- }
-
- if (Options.SETTINGS in options) {
- var settings_section = new Menu ();
- settings_section.append (_ ("Character Map"), "indicator.map");
- settings_section.append (_ ("Keyboard Layout Chart"), "indicator.chart");
- settings_section.append (_ ("Text Entry Settings..."), "indicator.settings");
- submenu.append_section (null, settings_section);
- }
-
- var indicator = new MenuItem.submenu (null, submenu);
- indicator.set_detailed_action ("indicator.indicator");
- indicator.set_attribute ("x-canonical-type", "s", "org.ayatana.indicator.root");
-
- /* We need special mouse actions on the lock screen. */
- if (Options.DCONF in options) {
- indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.next");
- indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.scroll");
- } else {
- indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.locked_next");
- indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.locked_scroll");
- }
-
- indicator_menu.append_item (indicator);
- }
- }
-
- public signal void activate (IBus.Property property, IBus.PropState state);
-
- public void set_sources (Source[] sources) {
- sources_section.remove_all ();
-
- for (var i = 0; i < sources.length; i++) {
- var visible = (sources[i].is_xkb && Options.XKB in options) ||
- (sources[i].is_ibus && Options.IBUS in options);
-
- if (visible) {
- string action;
-
- if (Options.DCONF in options) {
- action = "indicator.current";
- } else {
- action = "indicator.active";
- }
-
- var item = new MenuItem (sources[i].name, action);
-
- item.set_attribute (Menu.ATTRIBUTE_TARGET, "u", i);
-
- if (sources[i].icon != null) {
- item.set_icon ((!) sources[i].icon);
- }
-
- sources_section.append_item (item);
- }
- }
- }
-
- public void set_properties (IBus.PropList properties) {
- if (Options.IBUS in options) {
- properties_section.set_properties (properties);
- }
- }
-
- public void update_property (IBus.Property property) {
- if (Options.IBUS in options) {
- properties_section.update_property (property);
- }
- }
-
- public override bool is_mutable () {
- return indicator_menu.is_mutable ();
- }
-
- public override int get_n_items () {
- return indicator_menu.get_n_items ();
- }
-
- public override void get_item_attributes (int item_index, out HashTable<string, Variant>? attributes) {
- indicator_menu.get_item_attributes (item_index, out attributes);
- }
-
- public override void get_item_links (int item_index, out HashTable<string, MenuModel> links) {
- indicator_menu.get_item_links (item_index, out links);
- }
-
- public override Variant get_item_attribute_value (int item_index, string attribute, VariantType? expected_type) {
- return indicator_menu.get_item_attribute_value (item_index, attribute, expected_type);
- }
-
- public override MenuModel get_item_link (int item_index, string link) {
- return indicator_menu.get_item_link (item_index, link);
- }
-
- public override MenuAttributeIter iterate_item_attributes (int item_index) {
- return indicator_menu.iterate_item_attributes (item_index);
- }
-
- public override MenuLinkIter iterate_item_links (int item_index) {
- return indicator_menu.iterate_item_links (item_index);
- }
-}
diff --git a/src/keyboard-plugin.vala b/src/keyboard-plugin.vala
deleted file mode 100644
index af1628f6..00000000
--- a/src/keyboard-plugin.vala
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2014 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-[DBus (name="org.ayatana.SettingsDaemon.Keyboard.Private")]
-public interface KeyboardPlugin : Object {
-
- public abstract void activate_input_source (uint index) throws IOError;
-}
diff --git a/src/keyboard.c b/src/keyboard.c
new file mode 100644
index 00000000..1c0b22a0
--- /dev/null
+++ b/src/keyboard.c
@@ -0,0 +1,287 @@
+#include <X11/XKBlib.h>
+#include <libxklavier/xklavier.h>
+#include "keyboard.h"
+
+enum
+{
+ LAYOUT_CHANGED,
+ CONFIG_CHANGED,
+ LAST_SIGNAL
+};
+
+static guint m_lSignals[LAST_SIGNAL];
+
+struct _KeyboardPrivate
+{
+ GPollFD cPollFD;
+ GSourceFuncs cSourceFuncs;
+ XklEngine *pEngine;
+ GHashTable *lLayouts;
+ Display *pDisplay;
+ guint nLayout;
+ gint nXkbEventType;
+ XklConfigRec *pConfigRec;
+};
+
+typedef KeyboardPrivate priv_t;
+
+G_DEFINE_TYPE_WITH_PRIVATE(Keyboard, keyboard, G_TYPE_OBJECT)
+
+typedef struct _Layout
+{
+ gchar *sId;
+ gchar *sLanguage;
+ gchar *sDescription;
+
+} Layout;
+
+typedef struct _LayoutParser
+{
+ const gchar *sLayout;
+ const gchar *sLanguage;
+ Keyboard *pKeyboard;
+
+} LayoutParser;
+
+typedef struct _Source
+{
+ GSource cSource;
+ Keyboard *pKeyboard;
+
+} Source;
+
+static gboolean onCheckEvent(Display *pDisplay, XEvent *pEvent, XPointer pData)
+{
+ gint *pXkbEventType = (gint*)pData;
+
+ if (pEvent->type == *pXkbEventType)
+ {
+ XkbEvent *pXkbEvent = (XkbEvent*)pEvent;
+
+ if (pXkbEvent->any.xkb_type == XkbStateNotify || pXkbEvent->any.xkb_type == XkbNamesNotify)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static gboolean onCheck(GSource *pSource)
+{
+ Keyboard *pKeyboard = ((Source*)pSource)->pKeyboard;
+ XEvent cEvent;
+ gboolean bEvent = XCheckIfEvent(pKeyboard->pPrivate->pDisplay, &cEvent, onCheckEvent, (XPointer)&pKeyboard->pPrivate->nXkbEventType);
+
+ if (bEvent)
+ {
+ XklConfigRec *pConfigRec = xkl_config_rec_new();
+ xkl_config_rec_get_from_server(pConfigRec, pKeyboard->pPrivate->pEngine);
+ gboolean bConfigChanged = FALSE;
+ gboolean bLayoutChanged = FALSE;
+
+ if (!xkl_config_rec_equals(pKeyboard->pPrivate->pConfigRec, pConfigRec))
+ {
+ if (g_strv_length(pKeyboard->pPrivate->pConfigRec->layouts) > g_strv_length(pConfigRec->layouts))
+ {
+ xkl_engine_lock_group(pKeyboard->pPrivate->pEngine, 0);
+ pKeyboard->pPrivate->nLayout = 0;
+ bLayoutChanged = TRUE;
+ }
+
+ xkl_config_rec_get_from_server(pKeyboard->pPrivate->pConfigRec, pKeyboard->pPrivate->pEngine);
+ bConfigChanged = TRUE;
+ }
+
+ g_object_unref(pConfigRec);
+ pConfigRec = NULL;
+
+ if (((XkbEvent*)&cEvent)->any.xkb_type == XkbStateNotify && !bConfigChanged && ((XkbEvent*)&cEvent)->state.group != pKeyboard->pPrivate->nLayout && ((XkbEvent*)&cEvent)->state.group < g_strv_length(pKeyboard->pPrivate->pConfigRec->layouts))
+ {
+ pKeyboard->pPrivate->nLayout = ((XkbEvent*)&cEvent)->state.group;
+ bLayoutChanged = TRUE;
+ }
+
+ if (bLayoutChanged)
+ {
+ g_signal_emit(pKeyboard, m_lSignals[LAYOUT_CHANGED], 0);
+ }
+
+ if (bConfigChanged)
+ {
+ g_signal_emit(pKeyboard, m_lSignals[CONFIG_CHANGED], 0);
+ }
+ }
+
+ return FALSE;
+}
+
+static void freeLayout(gpointer pData)
+{
+ Layout *pLayout = pData;
+
+ g_return_if_fail(pLayout != NULL);
+
+ g_free(pLayout->sId);
+ g_free(pLayout->sLanguage);
+ g_free(pLayout->sDescription);
+ g_slice_free(Layout, pLayout);
+}
+
+static void onParseLayouts(XklConfigRegistry *pRegistry, const XklConfigItem * pItem, gpointer pData)
+{
+ LayoutParser *pLayoutParser = (LayoutParser*)pData;
+ Layout *pLayout = g_slice_new0(Layout);
+
+ if (pLayoutParser->sLayout)
+ {
+ pLayout->sId = g_strjoin("+", pLayoutParser->sLayout, pItem->name, NULL);
+ pLayout->sLanguage = g_strdup(pLayoutParser->sLanguage);
+ pLayout->sDescription = g_strdup(pItem->description);
+ }
+ else
+ {
+ pLayout->sId = g_strdup(pItem->name);
+ pLayout->sLanguage = g_strdup(pItem->short_description);
+ pLayout->sDescription = g_strdup(pItem->description);
+ }
+
+ g_hash_table_replace(pLayoutParser->pKeyboard->pPrivate->lLayouts, pLayout->sId, pLayout);
+
+ if (pLayoutParser->sLayout == NULL)
+ {
+ LayoutParser cLayoutParser;
+ cLayoutParser.sLayout = pItem->name;
+ cLayoutParser.pKeyboard = pLayoutParser->pKeyboard;
+ cLayoutParser.sLanguage = pItem->short_description;
+
+ xkl_config_registry_foreach_layout_variant(pRegistry, pItem->name, onParseLayouts, &cLayoutParser);
+ }
+}
+
+void keyboard_AddSource(Keyboard *pKeyboard)
+{
+ XkbQueryExtension(pKeyboard->pPrivate->pDisplay, 0, &pKeyboard->pPrivate->nXkbEventType, 0, 0, 0);
+ XkbSelectEventDetails(pKeyboard->pPrivate->pDisplay, XkbUseCoreKbd, XkbStateNotify, XkbAllStateComponentsMask, XkbGroupStateMask);
+
+ pKeyboard->pPrivate->cPollFD.fd = ConnectionNumber(pKeyboard->pPrivate->pDisplay);
+ pKeyboard->pPrivate->cPollFD.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
+ pKeyboard->pPrivate->cPollFD.revents = 0;
+ pKeyboard->pPrivate->cSourceFuncs.prepare = NULL;
+ pKeyboard->pPrivate->cSourceFuncs.check = onCheck;
+ pKeyboard->pPrivate->cSourceFuncs.dispatch = NULL;
+ pKeyboard->pPrivate->cSourceFuncs.finalize = NULL;
+
+ GSource *pSource = g_source_new(&pKeyboard->pPrivate->cSourceFuncs, sizeof(Source));
+ ((Source*)pSource)->pKeyboard = pKeyboard;
+ g_source_add_poll(pSource, &pKeyboard->pPrivate->cPollFD);
+ g_source_attach(pSource, NULL);
+}
+
+guint keyboard_GetNumLayouts(Keyboard *pKeyboard)
+{
+ return g_strv_length(pKeyboard->pPrivate->pConfigRec->layouts);
+}
+
+void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription)
+{
+ if (nLayout == -1)
+ {
+ nLayout = pKeyboard->pPrivate->nLayout;
+ }
+
+ gchar *sLayout = pKeyboard->pPrivate->pConfigRec->layouts[nLayout];
+ gchar *sVariant = pKeyboard->pPrivate->pConfigRec->variants[nLayout];
+ gchar *sId;
+
+ if (strlen(sVariant))
+ {
+ sId = g_strconcat(sLayout, "+", sVariant, NULL);
+ }
+ else
+ {
+ sId = g_strdup(sLayout);
+ }
+
+ const Layout *pLayout;
+ g_hash_table_lookup_extended(pKeyboard->pPrivate->lLayouts, sId, NULL, (gpointer*)&pLayout);
+
+ if (pLanguage != NULL)
+ {
+ *pLanguage = g_strndup(pLayout->sLanguage, 2);
+ }
+
+ if (pDescription != NULL)
+ {
+ *pDescription = g_strdup(pLayout->sDescription);
+ }
+
+ g_free(sId);
+}
+
+void keyboard_SetLayout(Keyboard *pKeyboard, gint nLayout)
+{
+ xkl_engine_lock_group(pKeyboard->pPrivate->pEngine, nLayout);
+}
+
+static void onDispose(GObject *pObject)
+{
+ Keyboard *self = G_KEYBOARD(pObject);
+
+ if (self->pPrivate->lLayouts)
+ {
+ g_hash_table_destroy(self->pPrivate->lLayouts);
+ }
+
+ if (self->pPrivate->pConfigRec)
+ {
+ g_object_unref(self->pPrivate->pConfigRec);
+ self->pPrivate->pConfigRec = NULL;
+ }
+
+ G_OBJECT_CLASS(keyboard_parent_class)->dispose(pObject);
+}
+
+static void keyboard_class_init(KeyboardClass *klass)
+{
+ GObjectClass *pClass = G_OBJECT_CLASS(klass);
+ pClass->dispose = onDispose;
+ m_lSignals[LAYOUT_CHANGED] = g_signal_new(KEYBOARD_LAYOUT_CHANGED, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+ m_lSignals[CONFIG_CHANGED] = g_signal_new(KEYBOARD_CONFIG_CHANGED, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+}
+
+Keyboard* keyboard_new()
+{
+ GObject *pObject = g_object_new(G_TYPE_KEYBOARD, NULL);
+
+ return G_KEYBOARD(pObject);
+}
+
+static void keyboard_init(Keyboard *self)
+{
+ self->pPrivate = keyboard_get_instance_private(self);
+ self->pPrivate->pDisplay = XOpenDisplay(NULL);
+
+ g_assert(self->pPrivate->pDisplay);
+
+ self->pPrivate->pEngine = xkl_engine_get_instance(self->pPrivate->pDisplay);
+
+ g_assert(self->pPrivate->pEngine);
+
+ self->pPrivate->lLayouts = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, freeLayout);
+ XklConfigRegistry *pRegistry = xkl_config_registry_get_instance(self->pPrivate->pEngine);
+ xkl_config_registry_load(pRegistry, TRUE);
+
+ LayoutParser cLayoutParser;
+ cLayoutParser.sLayout = NULL;
+ cLayoutParser.pKeyboard = self;
+ cLayoutParser.sLanguage = NULL;
+ xkl_config_registry_foreach_layout(pRegistry, onParseLayouts, &cLayoutParser);
+
+ xkl_engine_start_listen(self->pPrivate->pEngine, XKLL_TRACK_KEYBOARD_STATE);
+
+ self->pPrivate->pConfigRec = xkl_config_rec_new();
+ xkl_config_rec_get_from_server(self->pPrivate->pConfigRec, self->pPrivate->pEngine);
+ XklState *pState = xkl_engine_get_current_state(self->pPrivate->pEngine);
+ self->pPrivate->nLayout = pState->group;
+}
diff --git a/src/keyboard.h b/src/keyboard.h
new file mode 100644
index 00000000..50e8bff0
--- /dev/null
+++ b/src/keyboard.h
@@ -0,0 +1,37 @@
+#ifndef __KEYBOARD_H__
+#define __KEYBOARD_H__
+
+G_BEGIN_DECLS
+
+#define KEYBOARD_LAYOUT_CHANGED "layout-changed"
+#define KEYBOARD_CONFIG_CHANGED "config-changed"
+
+#define G_KEYBOARD(o) (G_TYPE_CHECK_INSTANCE_CAST((o), G_TYPE_KEYBOARD, Keyboard))
+#define G_TYPE_KEYBOARD (keyboard_get_type())
+#define G_IS_KEYBOARD(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), G_TYPE_KEYBOARD))
+
+typedef struct _Keyboard Keyboard;
+typedef struct _KeyboardClass KeyboardClass;
+typedef struct _KeyboardPrivate KeyboardPrivate;
+
+struct _Keyboard
+{
+ GObject parent;
+ KeyboardPrivate *pPrivate;
+};
+
+struct _KeyboardClass
+{
+ GObjectClass parent_class;
+};
+
+GType keyboard_get_type(void);
+Keyboard* keyboard_new();
+void keyboard_AddSource(Keyboard *pKeyboard);
+guint keyboard_GetNumLayouts(Keyboard *pKeyboard);
+void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription);
+void keyboard_SetLayout(Keyboard *pKeyboard, gint nLayout);
+
+G_END_DECLS
+
+#endif
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 00000000..eb6a1b9a
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,40 @@
+#include <locale.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib-unix.h>
+#include "service.h"
+
+static void onNameLost(gpointer instance G_GNUC_UNUSED, gpointer pLoop)
+{
+ g_message("exiting: service couldn't acquire or lost ownership of busname");
+ g_main_loop_quit((GMainLoop*)pLoop);
+}
+
+static gboolean onQuit(gpointer pData)
+{
+ GMainLoop *pLoop = (GMainLoop*)pData;
+ g_main_loop_quit(pLoop);
+
+ return G_SOURCE_REMOVE;
+}
+
+int main(int argc G_GNUC_UNUSED, char ** argv G_GNUC_UNUSED)
+{
+ setlocale(LC_ALL, "");
+ bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+ textdomain(GETTEXT_PACKAGE);
+
+ IndicatorKeyboardService *pService = indicator_keyboard_service_new(NULL);
+ GMainLoop *pLoop = g_main_loop_new(NULL, FALSE);
+
+ g_signal_connect(pService, "name-lost", G_CALLBACK(onNameLost), pLoop);
+ g_unix_signal_add(SIGINT, onQuit, pLoop);
+
+ indicator_keyboard_service_AddKeyboardSource(pService);
+
+ g_main_loop_run(pLoop);
+ g_main_loop_unref(pLoop);
+ g_clear_object(&pService);
+
+ return 0;
+}
diff --git a/src/main.vala b/src/main.vala
deleted file mode 100644
index 9bb3eb1f..00000000
--- a/src/main.vala
+++ /dev/null
@@ -1,1265 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-[DBus (name = "org.ayatana.indicator.keyboard")]
-public class Indicator.Keyboard.Service : Object {
-
- private static const uint PROPERTIES_DELAY = 250;
-
- private static Service service;
-
- private bool force;
- private bool use_gtk;
-
- private MainLoop? loop;
- private Settings indicator_settings;
- private Settings source_settings;
- private Settings per_window_settings;
- private SList<Act.User> users;
-
- private WindowStack? window_stack;
- private Gee.HashMap<uint, Source>? window_sources;
- private uint focused_window_id;
-
- private IBus.Bus? ibus;
- private IBusPanel? ibus_panel;
- private ulong ibus_connected_id;
- private uint panel_timeout;
-
- private Fcitx.InputMethod? fcitx;
- private bool fcitx_initialized;
-
- private Source[]? sources;
-
- private SimpleActionGroup? action_group;
- private SimpleAction? indicator_action;
- private SimpleAction? active_action;
- private IndicatorMenu? desktop_menu;
- private IndicatorMenu? desktop_greeter_menu;
- private IndicatorMenu? desktop_lockscreen_menu;
-
- private KeyboardPlugin? keyboard_plugin;
- private UnitySession? unity_session;
- private UnityGreeter? unity_greeter;
- private string? greeter_user;
- private uint lightdm_current;
-
- [DBus (visible = false)]
- public Service (ref unowned string[] args) {
- force = "--force" in args;
- use_gtk = "--use-gtk" in args;
-
- if (use_gtk) {
- use_gtk = Gtk.init_check (ref args);
-
- Gtk.IconTheme? icon_theme = Gtk.IconTheme.get_default ();
-
- if (icon_theme != null) {
- ((!) icon_theme).changed.connect (() => {
- if (sources != null) {
- foreach (var source in (!) sources) {
- source.icon = null;
- }
- }
-
- if (desktop_menu != null) {
- get_desktop_menu ().set_sources (get_sources ());
- }
-
- if (desktop_greeter_menu != null) {
- get_desktop_greeter_menu ().set_sources (get_sources ());
- }
-
- if (desktop_lockscreen_menu != null) {
- get_desktop_lockscreen_menu ().set_sources (get_sources ());
- }
-
- if (indicator_action != null) {
- update_indicator_action ();
- }
- });
- }
- } else {
- Gdk.init (ref args);
- }
-
- if (is_login_user ()) {
- var name = Environment.get_variable ("UNITY_GREETER_DBUS_NAME");
-
- if (name != null) {
- Bus.watch_name (BusType.SESSION,
- (!) name,
- BusNameWatcherFlags.NONE,
- handle_unity_greeter_name_appeared,
- handle_unity_greeter_name_vanished);
- }
- } else {
- Bus.watch_name (BusType.SESSION,
- "org.gnome.SettingsDaemon.Keyboard",
- BusNameWatcherFlags.NONE,
- handle_keyboard_name_appeared,
- handle_keyboard_name_vanished);
-
- Bus.watch_name (BusType.SESSION,
- "org.ayatana.Unity",
- BusNameWatcherFlags.NONE,
- handle_unity_name_appeared,
- handle_unity_name_vanished);
-
- if (!is_fcitx_active ()) {
- Bus.watch_name (BusType.SESSION,
- "org.ayatana.Unity.WindowStack",
- BusNameWatcherFlags.NONE,
- handle_window_stack_name_appeared,
- handle_window_stack_name_vanished);
- }
- }
-
- indicator_settings = new Settings ("org.ayatana.indicator.keyboard");
- indicator_settings.changed["visible"].connect (handle_changed_visible);
-
- source_settings = new Settings ("org.gnome.desktop.input-sources");
- source_settings.changed["current"].connect (handle_changed_current);
- source_settings.changed["sources"].connect (handle_changed_sources);
-
- per_window_settings = new Settings ("org.gnome.libgnomekbd.desktop");
- per_window_settings.changed["group-per-window"].connect (handle_changed_group_per_window);
-
- migrate_keyboard_layouts ();
- update_window_sources ();
- acquire_bus_name ();
- }
-
- [DBus (visible = false)]
- private static bool is_login_user () {
- return Environment.get_user_name () == "lightdm";
- }
-
- [DBus (visible = false)]
- private static bool is_ibus_active () {
- if (is_login_user ()) {
- return false;
- }
-
- var module = Environment.get_variable ("GTK_IM_MODULE");
- return module != null && (!) module == "ibus";
- }
-
- [DBus (visible = false)]
- private static bool is_fcitx_active () {
- if (is_login_user ()) {
- return false;
- }
-
- var module = Environment.get_variable ("GTK_IM_MODULE");
- return module != null && (!) module == "fcitx";
- }
-
- [DBus (visible = false)]
- private IBus.Bus get_ibus () {
- if (ibus == null) {
- IBus.init ();
-
- var proxy = new IBus.Bus ();
-
- proxy.connected.connect (() => {
- if (desktop_menu != null) {
- get_desktop_menu ().set_sources (get_sources ());
- }
-
- if (desktop_greeter_menu != null) {
- get_desktop_greeter_menu ().set_sources (get_sources ());
- }
-
- if (desktop_lockscreen_menu != null) {
- get_desktop_lockscreen_menu ().set_sources (get_sources ());
- }
-
- if (indicator_action != null) {
- update_indicator_action ();
- }
- });
-
- ibus = proxy;
- }
-
- return (!) ibus;
- }
-
- [DBus (visible = false)]
- private IBusPanel? get_ibus_panel () {
- if (ibus_panel == null && get_ibus ().is_connected ()) {
- var connection = get_ibus ().get_connection ();
- var name = "org.freedesktop.IBus.Panel";
- var path = "/org/freedesktop/IBus/Panel";
-
- try {
- var proxy = connection.get_proxy_sync<IBusPanel> (name, path);
-
- proxy.properties_registered.connect ((variant) => {
- var properties = new IBus.PropList ();
- properties.deserialize (variant);
-
- if (properties is IBus.PropList) {
- handle_properties_registered ((!) (properties as IBus.PropList));
- }
- });
- proxy.property_updated.connect ((variant) => {
- var type = IBus.PropType.NORMAL;
- var state = IBus.PropState.INCONSISTENT;
- var text = new IBus.Text.from_static_string ("");
- var property = new IBus.Property ("", type, text, null, text, false, false, state, null);
- property.deserialize (variant);
-
- if (property is IBus.Property) {
- handle_property_updated ((!) (property as IBus.Property));
- }
- });
-
- ibus_panel = proxy;
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
-
- return ibus_panel;
- }
-
- [DBus (visible = false)]
- private Fcitx.InputMethod? get_fcitx () {
- if (!fcitx_initialized) {
- fcitx_initialized = true;
-
- if (is_fcitx_active ()) {
- try {
- var proxy = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0);
- proxy.notify["current-im"].connect ((pspec) => { handle_changed_current ("current"); });
- fcitx = proxy;
- } catch (Error error) {
- warning ("error: %s", error.message);
- }
- }
- }
-
- return fcitx;
- }
-
- [DBus (visible = false)]
- public void up () {
- if (loop == null) {
- var main_loop = new MainLoop ();
- loop = main_loop;
- main_loop.run ();
- }
- }
-
- [DBus (visible = false)]
- public void down () {
- if (loop != null) {
- ((!) loop).quit ();
- loop = null;
- }
- }
-
- [DBus (visible = false)]
- private void acquire_bus_name () {
- Bus.own_name (BusType.SESSION,
- "org.ayatana.indicator.keyboard",
- BusNameOwnerFlags.ALLOW_REPLACEMENT | (force ? BusNameOwnerFlags.REPLACE : 0),
- handle_bus_acquired,
- null,
- handle_name_lost);
- }
-
- [DBus (visible = false)]
- private void update_greeter_user () {
- if (greeter_user == null && unity_greeter != null) {
- try {
- greeter_user = ((!) unity_greeter).get_active_entry ();
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
-
- string? source = null;
-
- if (greeter_user != null) {
- var manager = Act.UserManager.get_default ();
-
- if (manager.is_loaded) {
- Act.User? user = manager.get_user ((!) greeter_user);
-
- if (user != null && ((!) user).is_loaded) {
- foreach (var outer in ((!) user).input_sources) {
- foreach (var inner in (!) outer) {
- unowned string key;
- unowned string value;
-
- ((!) inner).get ("{&s&s}", out key, out value);
-
- if (key == "xkb") {
- source = value;
- break;
- }
- }
-
- if (source != null) {
- break;
- }
- }
-
- if (source == null) {
- var layouts = ((!) user).xkeyboard_layouts;
-
- if (layouts.length <= 0) {
- var user_list = LightDM.UserList.get_instance ();
- LightDM.User? light_user = user_list.get_user_by_name ((!) greeter_user);
-
- if (light_user != null) {
- layouts = ((!) light_user).get_layouts ();
- }
- }
-
- if (layouts.length > 0) {
- source = layouts[0].replace (" ", "+").replace ("\t", "+");
- }
- }
- }
- }
- }
-
- if (source == null) {
- LightDM.Layout? layout = LightDM.get_layout ();
-
- if (layout != null) {
- source = ((!) layout).name;
-
- if (source != null) {
- source = ((!) source).replace (" ", "+");
- source = ((!) source).replace ("\t", "+");
- }
- }
- }
-
- if (source != null) {
- var array = source_settings.get_value ("sources");
-
- for (var i = 0; i < array.n_children (); i++) {
- unowned string type;
- unowned string name;
-
- array.get_child (i, "(&s&s)", out type, out name);
-
- if (type == "xkb" && name == (!) source) {
- source_settings.set_uint ("current", i);
- break;
- }
- }
- }
- }
-
- [DBus (visible = false)]
- private void handle_entry_selected (string entry_name) {
- if (greeter_user == null || entry_name != (!) greeter_user) {
- greeter_user = entry_name;
-
- update_greeter_user ();
- }
- }
-
- [DBus (visible = false)]
- private void migrate_keyboard_layouts () {
- if (is_login_user ()) {
- lightdm_current = get_current ();
-
- var manager = Act.UserManager.get_default ();
-
- if (manager.is_loaded) {
- users = manager.list_users ();
-
- foreach (var user in users) {
- if (user.is_loaded) {
- migrate_input_sources ();
- } else {
- user.notify["is-loaded"].connect ((pspec) => {
- if (user.is_loaded) {
- migrate_input_sources ();
- }
- });
- }
- }
- } else {
- manager.notify["is-loaded"].connect ((pspec) => {
- if (manager.is_loaded) {
- users = manager.list_users ();
-
- foreach (var user in users) {
- if (user.is_loaded) {
- migrate_input_sources ();
- } else {
- user.notify["is-loaded"].connect ((pspec) => {
- if (user.is_loaded) {
- migrate_input_sources ();
- }
- });
- }
- }
- }
- });
- }
-
- var user_list = LightDM.UserList.get_instance ();
-
- user_list.user_added.connect ((user) => { migrate_input_sources (); });
- user_list.user_changed.connect ((user) => { migrate_input_sources (); });
- user_list.user_removed.connect ((user) => { migrate_input_sources (); });
-
- /* Force the loading of the user list. */
- user_list.get_user_by_name ("");
- } else {
- if (!indicator_settings.get_boolean ("migrated")) {
- var builder = new VariantBuilder (new VariantType ("a(ss)"));
- var length = 0;
-
- var layout_settings = new Settings ("org.gnome.libgnomekbd.keyboard");
- var layouts = layout_settings.get_strv ("layouts");
-
- foreach (var layout in layouts) {
- var source = layout;
- source = source.replace (" ", "+");
- source = source.replace ("\t", "+");
-
- builder.add ("(ss)", "xkb", source);
- length++;
- }
-
- var engines = get_ibus ().list_active_engines ();
-
- foreach (var engine in engines) {
- if (length == 0 || engine.name.has_prefix ("xkb")) {
- var source = "us";
- string? layout = engine.get_layout ();
- string? variant = engine.get_layout_variant ();
-
- if (layout != null && ((!) layout).length == 0) {
- layout = null;
- }
-
- if (variant != null && ((!) variant).length == 0) {
- variant = null;
- }
-
- if (layout != null && variant != null) {
- source = @"$((!) layout)+$((!) variant)";
- } else if (layout != null) {
- source = (!) layout;
- }
-
- builder.add ("(ss)", "xkb", source);
- length++;
- }
-
- if (!engine.name.has_prefix ("xkb")) {
- builder.add ("(ss)", "ibus", engine.name);
- length++;
- }
- }
-
- source_settings.set_value ("sources", builder.end ());
- indicator_settings.set_boolean ("migrated", true);
- }
- }
- }
-
- [DBus (visible = false)]
- private void migrate_input_sources () {
- var list = new Gee.LinkedList<string> ();
- var added = new Gee.HashSet<string> ();
-
- foreach (var user in users) {
- if (user.is_loaded) {
- var done = false;
-
- foreach (var outer in user.input_sources) {
- foreach (var inner in (!) outer) {
- unowned string key;
- unowned string source;
-
- ((!) inner).get ("{&s&s}", out key, out source);
-
- if (key == "xkb") {
- done = true;
-
- if (!added.contains (source)) {
- list.add (source);
- added.add (source);
- }
- }
- }
- }
-
- if (!done) {
- var layouts = user.xkeyboard_layouts;
- foreach (var layout in layouts) {
- done = true;
-
- var source = layout;
- source = source.replace (" ", "+");
- source = source.replace ("\t", "+");
-
- if (!added.contains (source)) {
- list.add (source);
- added.add (source);
- }
- }
- }
-
- if (!done) {
- var user_list = LightDM.UserList.get_instance ();
- LightDM.User? light_user = user_list.get_user_by_name (user.user_name);
-
- if (light_user != null) {
- var layouts = ((!) light_user).get_layouts ();
- foreach (var layout in layouts) {
- done = true;
-
- var source = layout;
- source = source.replace (" ", "+");
- source = source.replace ("\t", "+");
-
- if (!added.contains (source)) {
- list.add (source);
- added.add (source);
- }
- }
- }
- }
- }
- }
-
- LightDM.Layout? layout = LightDM.get_layout ();
-
- if (layout != null) {
- string? source = ((!) layout).name;
-
- if (source != null) {
- source = ((!) source).replace (" ", "+");
- source = ((!) source).replace ("\t", "+");
-
- if (!added.contains ((!) source)) {
- list.add ((!) source);
- added.add ((!) source);
- }
- }
- }
-
- var builder = new VariantBuilder (new VariantType ("a(ss)"));
-
- foreach (var name in list) {
- builder.add ("(ss)", "xkb", name);
- }
-
- if (lightdm_current < list.size) {
- source_settings.set_uint ("current", lightdm_current);
- } else {
- source_settings.set_uint ("current", list.size - 1);
- }
-
- source_settings.set_value ("sources", builder.end ());
-
- update_greeter_user ();
- }
-
- [DBus (visible = false)]
- private void update_login_layout () {
- if (is_login_user ()) {
- unowned List<LightDM.Layout> layouts = LightDM.get_layouts ();
- var current = get_current ();
-
- if (current < get_sources ().length) {
- var source = get_sources ()[current];
- string? name = null;
-
- if (source.layout != null && source.variant != null) {
- name = @"$((!) source.layout)\t$((!) source.variant)";
- } else if (source.layout != null) {
- name = source.layout;
- }
-
- if (name != null) {
- foreach (var layout in layouts) {
- if (layout.name == (!) name) {
- LightDM.set_layout (layout);
- break;
- }
- }
- }
- }
- }
- }
-
- [DBus (visible = false)]
- private void update_window_sources () {
- if (window_stack != null) {
- var group_per_window = per_window_settings.get_boolean ("group-per-window");
-
- if (group_per_window != (window_sources != null)) {
- if (group_per_window) {
- focused_window_id = 0;
-
- try {
- var windows = ((!) window_stack).get_window_stack ();
-
- foreach (var window in windows) {
- if (window.focused) {
- focused_window_id = window.window_id;
- break;
- }
- }
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
-
- window_sources = new Gee.HashMap<uint, Source> ();
- ((!) window_stack).window_destroyed.connect (handle_window_destroyed);
- ((!) window_stack).focused_window_changed.connect (handle_focused_window_changed);
- } else {
- ((!) window_stack).focused_window_changed.disconnect (handle_focused_window_changed);
- ((!) window_stack).window_destroyed.disconnect (handle_window_destroyed);
- window_sources = null;
- }
- }
- }
- }
-
- [DBus (visible = false)]
- private void handle_changed_group_per_window (string key) {
- update_window_sources ();
- }
-
- [DBus (visible = false)]
- private void handle_window_destroyed (uint window_id, string app_id) {
- ((!) window_sources).unset (window_id);
- }
-
- [DBus (visible = false)]
- private void handle_focused_window_changed (uint window_id, string app_id, uint stage) {
- var sources = get_sources ();
- var old_current = get_current ();
-
- if (old_current < sources.length) {
- ((!) window_sources)[focused_window_id] = sources[old_current];
- }
-
- if (!(((!) window_sources).has_key (window_id))) {
- var default_group = per_window_settings.get_int ("default-group");
-
- if (default_group >= 0) {
- for (var offset = 0; offset < sources.length; offset++) {
- var current = (default_group + offset) % sources.length;
- var source = sources[current];
-
- if (source.is_xkb ||
- (source.is_ibus && is_ibus_active ()) ||
- (source.is_fcitx && is_fcitx_active ())) {
- if (current != old_current) {
- source_settings.set_uint ("current", current);
- }
-
- break;
- }
- }
- }
- } else {
- var source = ((!) window_sources)[window_id];
-
- for (var current = 0; current < sources.length; current++) {
- if (sources[current] == source) {
- if (current != old_current) {
- source_settings.set_uint ("current", current);
- }
-
- break;
- }
- }
- }
-
- focused_window_id = window_id;
- }
-
- [DBus (visible = false)]
- private uint get_current () {
- if (is_fcitx_active () && get_fcitx () != null) {
- string? engine = ((!) get_fcitx ()).current_im;
-
- if (engine != null) {
- var is_xkb = ((!) engine).has_prefix ("fcitx-keyboard-");
- var type = is_xkb ? "xkb" : "fcitx";
- var name = (!) engine;
-
- if (is_xkb) {
- name = name.substring ("fcitx-keyboard-".length);
- var index = name.index_of ("-");
- if (index >= 0) {
- name.data[index] = '+';
- }
- }
-
- var i = 0;
-
- foreach (var pair in source_settings.get_value ("sources")) {
- unowned string source_type;
- unowned string source_name;
-
- ((!) pair).get ("(&s&s)", out source_type, out source_name);
-
- if (source_name == name && source_type == type) {
- return i;
- }
-
- i++;
- }
- }
- }
-
- return source_settings.get_uint ("current");
- }
-
- [DBus (visible = false)]
- private Source[] get_sources () {
- if (sources == null) {
- var array = source_settings.get_value ("sources");
-
- sources = new Source[array.n_children ()];
-
- for (var i = 0; i < ((!) sources).length; i++) {
- sources[i] = new Source(array.get_child_value (i), use_gtk);
- sources[i].show_subscript = false;
- sources[i].subscript = 1;
-
- for (var j = (int) i - 1; j >= 0; j--) {
- if ((!) sources[j].short_name == (!) sources[i].short_name) {
- sources[i].subscript = sources[j].subscript + 1;
- sources[i].show_subscript = true;
- sources[j].show_subscript = true;
-
- break;
- }
- }
-
- if (ibus_connected_id == 0 && sources[i].is_ibus) {
- ibus_connected_id = get_ibus ().connected.connect (() => { get_ibus_panel (); });
- get_ibus ().disconnected.connect (() => { ibus_panel = null; });
-
- if (get_ibus ().is_connected ()) {
- get_ibus_panel ();
- }
- }
- }
- }
-
- return (!) sources;
- }
-
- [DBus (visible = false)]
- private void handle_properties_registered (IBus.PropList list) {
- if (panel_timeout > 0) {
- GLib.Source.remove (panel_timeout);
- panel_timeout = 0;
- }
-
- panel_timeout = Timeout.add (PROPERTIES_DELAY, () => {
- get_desktop_menu ().set_properties (list);
- panel_timeout = 0;
- return false;
- });
- }
-
- [DBus (visible = false)]
- private void handle_property_updated (IBus.Property property) {
- get_desktop_menu ().update_property (property);
- }
-
- [DBus (visible = false)]
- private void update_indicator_action () {
- Icon? icon = null;
- string? name = null;
-
- var sources = get_sources ();
- var active = get_active_action ().get_state ().get_uint32 ();
-
- if (active < sources.length) {
- icon = sources[active].icon;
- name = sources[active].name;
- }
-
- var builder = new VariantBuilder (new VariantType ("a{sv}"));
- builder.add ("{sv}", "visible", indicator_settings.get_value ("visible"));
- if (name != null) {
- var description = _ ("%s input source").printf ((!) name);
- builder.add ("{sv}", "accessible-desc", new Variant.string (description));
- }
- if (icon != null) {
- builder.add ("{sv}", "icon", ((!) icon).serialize ());
- }
-
- get_indicator_action ().set_state (builder.end ());
- }
-
- [DBus (visible = false)]
- private SimpleAction get_indicator_action () {
- if (indicator_action == null) {
- var state = new Variant.parsed ("{ 'visible' : <false> }");
- indicator_action = new SimpleAction.stateful ("indicator", null, state);
- update_indicator_action ();
- }
-
- return (!) indicator_action;
- }
-
- [DBus (visible = false)]
- private void handle_changed_active (Variant? value) {
- if (value != null) {
- ((!) active_action).set_state ((!) value);
- update_indicator_action ();
-
- if (keyboard_plugin != null) {
- try {
- ((!) keyboard_plugin).activate_input_source (((!) value).get_uint32 ());
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
- }
- }
-
- [DBus (visible = false)]
- private void update_active_action () {
- if (active_action != null) {
- ((!) active_action).set_state (new Variant.uint32 (get_current ()));
- update_indicator_action ();
- }
- }
-
- [DBus (visible = false)]
- private Action get_active_action () {
- if (active_action == null) {
- var action = new SimpleAction.stateful ("active", VariantType.UINT32, new Variant.uint32 (get_current ()));
- action.change_state.connect (handle_changed_active);
- active_action = action;
- }
-
- return (!) active_action;
- }
-
- [DBus (visible = false)]
- private void handle_middle_click (Variant? parameter) {
- handle_scroll_wheel (new Variant.int32 (-1));
- }
-
- [DBus (visible = false)]
- private void handle_scroll_wheel (Variant? parameter) {
- if (parameter != null) {
- var old_current = get_current ();
- var sources = get_sources ();
- var length = 0;
-
- foreach (var source in sources) {
- if (source.is_xkb ||
- (source.is_ibus && is_ibus_active ()) ||
- (source.is_fcitx && is_fcitx_active ())) {
- length++;
- }
- }
-
- if (length > 1) {
- var current = old_current;
- var offset = -((!) parameter).get_int32 () % length;
- var jump = 1;
-
- if (offset < 0) {
- offset = -offset;
- jump = sources.length - jump;
- }
-
- /*
- * We need to cycle through offset valid input sources, skipping those that aren't
- * valid for this session (i.e. skipping Fcitx ones if IBus is active and vice-versa.
- * jump is the direction we need to cycle in, which is 1 if we want to cycle forward
- * and -1 (mod sources.length) if we want to cycle backward.
- */
-
- for (; offset > 0; offset--) {
- do {
- current = (current + jump) % sources.length;
- } while ((sources[current].is_ibus && !is_ibus_active ()) ||
- (sources[current].is_fcitx && !is_fcitx_active ()));
- }
-
- if (current != old_current) {
- source_settings.set_uint ("current", current);
- }
- }
- }
- }
-
- [DBus (visible = false)]
- private void handle_middle_click_when_locked (Variant? parameter) {
- handle_scroll_wheel_when_locked (new Variant.int32 (-1));
- }
-
- [DBus (visible = false)]
- private void handle_scroll_wheel_when_locked (Variant? parameter) {
- if (parameter != null) {
- var sources = get_sources ();
- var xkb_length = 0;
-
- /* Figure out how many Xkb sources we have. */
- foreach (var source in sources) {
- if (source.is_xkb) {
- xkb_length++;
- }
- }
-
- if (xkb_length > 1) {
- var active_action = get_active_action ();
- var active = active_action.get_state ().get_uint32 ();
- var offset = -((!) parameter).get_int32 () % xkb_length;
-
- /* Make offset positive modulo xkb_length. */
- if (offset < 0) {
- offset += xkb_length;
- }
-
- /* We need to cycle through Xkb sources only. */
- while (offset > 0) {
- do {
- active = (active + 1) % sources.length;
- } while (!sources[active].is_xkb);
-
- offset--;
- }
-
- active_action.change_state (new Variant.uint32 (active));
- }
- }
- }
-
- [DBus (visible = false)]
- protected virtual SimpleActionGroup create_action_group (Action root_action) {
- var group = new SimpleActionGroup ();
-
- /*
- * The 'current' action reflects the current setting in
- * GSettings and the 'active' action only exists to set the
- * active input source without persisting it.
- *
- * The lock screen menu uses the 'active' action while the
- * other menus instead persist the current input source.
- */
-
- group.add_action (root_action);
- group.add_action (get_active_action ());
- group.add_action (source_settings.create_action ("current"));
-
- var action = new SimpleAction ("next", null);
- action.activate.connect (handle_middle_click);
- group.add_action (action);
-
- action = new SimpleAction ("scroll", VariantType.INT32);
- action.activate.connect (handle_scroll_wheel);
- group.add_action (action);
-
- action = new SimpleAction ("locked_next", null);
- action.activate.connect (handle_middle_click_when_locked);
- group.add_action (action);
-
- action = new SimpleAction ("locked_scroll", VariantType.INT32);
- action.activate.connect (handle_scroll_wheel_when_locked);
- group.add_action (action);
-
- action = new SimpleAction ("map", null);
- action.activate.connect (handle_activate_map);
- group.add_action (action);
-
- action = new SimpleAction ("chart", null);
- action.activate.connect (handle_activate_chart);
- group.add_action (action);
-
- action = new SimpleAction ("settings", null);
- action.activate.connect (handle_activate_settings);
- group.add_action (action);
-
- return group;
- }
-
- [DBus (visible = false)]
- public SimpleActionGroup get_action_group () {
- if (action_group == null) {
- action_group = create_action_group (get_indicator_action ());
- }
-
- return (!) action_group;
- }
-
- [DBus (visible = false)]
- public IndicatorMenu get_desktop_menu () {
- if (desktop_menu == null) {
- var options = IndicatorMenu.Options.DCONF;
-
- if (!is_fcitx_active ()) {
- options |= IndicatorMenu.Options.XKB | IndicatorMenu.Options.SETTINGS;
-
- if (is_ibus_active ()) {
- options |= IndicatorMenu.Options.IBUS;
- }
- }
-
- var menu = new IndicatorMenu (get_action_group (), options);
-
- menu.set_sources (get_sources ());
- menu.activate.connect ((property, state) => {
- var panel = get_ibus_panel ();
-
- if (panel != null) {
- try {
- ((!) panel).activate_property (property.key, state);
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
- });
-
- desktop_menu = menu;
- }
-
- return (!) desktop_menu;
- }
-
- [DBus (visible = false)]
- public IndicatorMenu get_desktop_greeter_menu () {
- if (desktop_greeter_menu == null) {
- var options = IndicatorMenu.Options.DCONF |
- IndicatorMenu.Options.XKB;
-
- var menu = new IndicatorMenu (get_action_group (), options);
- menu.set_sources (get_sources ());
- desktop_greeter_menu = menu;
- }
-
- return (!) desktop_greeter_menu;
- }
-
- [DBus (visible = false)]
- public IndicatorMenu get_desktop_lockscreen_menu () {
- if (desktop_lockscreen_menu == null) {
- var options = IndicatorMenu.Options.XKB;
-
- var menu = new IndicatorMenu (get_action_group (), options);
- menu.set_sources (get_sources ());
- desktop_lockscreen_menu = menu;
- }
-
- return (!) desktop_lockscreen_menu;
- }
-
- [DBus (visible = false)]
- private void handle_changed_visible (string key) {
- update_indicator_action ();
- }
-
- [DBus (visible = false)]
- private void handle_changed_current (string key) {
- update_indicator_action ();
- update_active_action ();
- update_login_layout ();
- }
-
- [DBus (visible = false)]
- private void handle_changed_sources (string key) {
- sources = null;
-
- get_desktop_menu ().set_sources (get_sources ());
- get_desktop_greeter_menu ().set_sources (get_sources ());
- get_desktop_lockscreen_menu ().set_sources (get_sources ());
- update_indicator_action ();
- update_login_layout ();
- }
-
- [DBus (visible = false)]
- private void handle_activate_map (Variant? parameter) {
- try {
- Process.spawn_command_line_async ("gucharmap");
- } catch (SpawnError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_activate_chart (Variant? parameter) {
- string? layout = "us";
- string? variant = null;
-
- var sources = get_sources ();
- var current = get_current ();
-
- if (current < sources.length) {
- layout = sources[current].layout;
- variant = sources[current].variant;
- }
-
- var has_layout = layout != null && ((!) layout).get_char () != '\0';
- var has_variant = variant != null && ((!) variant).get_char () != '\0';
-
- try {
- string command;
-
- if (has_layout && has_variant) {
- command = @"gkbd-keyboard-display -l \"$((!) layout)\t$((!) variant)\"";
- } else if (has_layout) {
- command = @"gkbd-keyboard-display -l $((!) layout)";
- } else {
- command = @"gkbd-keyboard-display -l us";
- }
-
- Process.spawn_command_line_async (command);
- } catch (SpawnError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_activate_settings (Variant? parameter) {
- try {
- Process.spawn_command_line_async ("unity-control-center region layouts");
- } catch (SpawnError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_unity_greeter_name_appeared (DBusConnection connection, string name, string name_owner) {
- try {
- var greeter = Bus.get_proxy_sync<UnityGreeter> (BusType.SESSION, name, "/list");
- greeter.entry_selected.connect (handle_entry_selected);
- unity_greeter = greeter;
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_unity_greeter_name_vanished (DBusConnection connection, string name) {
- unity_greeter = null;
- }
-
- [DBus (visible = false)]
- private void handle_keyboard_name_appeared (DBusConnection connection, string name, string name_owner) {
- try {
- keyboard_plugin = Bus.get_proxy_sync (BusType.SESSION, name, "/org/gnome/SettingsDaemon/Keyboard");
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_keyboard_name_vanished (DBusConnection connection, string name) {
- keyboard_plugin = null;
- }
-
- [DBus (visible = false)]
- private void handle_unity_name_appeared (DBusConnection connection, string name, string name_owner) {
- try {
- var session = Bus.get_proxy_sync<UnitySession> (BusType.SESSION, name, "/org/ayatana/Unity/Session");
-
- session.locked.connect (() => {
- var sources = get_sources ();
-
- if (sources.length > 0) {
- var current = get_current ();
-
- if (current < sources.length && !sources[current].is_xkb) {
- for (var i = 0; i < sources.length; i++) {
- if (sources[i].is_xkb) {
- get_active_action ().change_state (new Variant.uint32 (i));
- break;
- }
- }
- }
- }
- });
- session.unlocked.connect (() => {
- get_active_action ().change_state (new Variant.uint32 (get_current ()));
- });
-
- unity_session = session;
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_unity_name_vanished (DBusConnection connection, string name) {
- unity_session = null;
- }
-
- [DBus (visible = false)]
- private void handle_window_stack_name_appeared (DBusConnection connection, string name, string name_owner) {
- try {
- window_stack = Bus.get_proxy_sync (BusType.SESSION, name, "/org/ayatana/Unity/WindowStack");
- update_window_sources ();
- } catch (IOError error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_window_stack_name_vanished (DBusConnection connection, string name) {
- window_stack = null;
- }
-
- [DBus (visible = false)]
- private void handle_bus_acquired (DBusConnection connection, string name) {
- try {
- connection.export_action_group ("/org/ayatana/indicator/keyboard", get_action_group ());
- connection.export_menu_model ("/org/ayatana/indicator/keyboard/desktop", get_desktop_menu ());
- connection.export_menu_model ("/org/ayatana/indicator/keyboard/desktop_greeter", get_desktop_greeter_menu ());
- connection.export_menu_model ("/org/ayatana/indicator/keyboard/desktop_lockscreen", get_desktop_lockscreen_menu ());
- } catch (Error error) {
- warning ("error: %s", error.message);
- }
- }
-
- [DBus (visible = false)]
- private void handle_name_lost (DBusConnection? connection, string name) {
- down ();
- }
-
- [DBus (visible = false)]
- public static int main (string[] args) {
- Service.service = new Service (ref args);
-
- Posix.signal (Posix.SIGTERM, (code) => {
- Service.service.down ();
- });
-
- Service.service.up ();
-
- return 0;
- }
-}
diff --git a/src/service.c b/src/service.c
new file mode 100644
index 00000000..5353fb24
--- /dev/null
+++ b/src/service.c
@@ -0,0 +1,412 @@
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+#include "service.h"
+#include "utils.h"
+
+#define BUS_NAME "org.ayatana.indicator.keyboard"
+#define BUS_PATH "/org/ayatana/indicator/keyboard"
+
+static guint m_nSignal = 0;
+
+enum
+{
+ SECTION_HEADER = (1 << 0),
+ SECTION_LAYOUTS = (1 << 1),
+ SECTION_SETTINGS = (1 << 2)
+};
+
+enum
+{
+ PROFILE_PHONE,
+ PROFILE_DESKTOP,
+ PROFILE_GREETER,
+ N_PROFILES
+};
+
+static const char * const m_lMenuNames[N_PROFILES] =
+{
+ "phone",
+ "desktop",
+ "greeter"
+};
+
+struct ProfileMenuInfo
+{
+ GMenu *pMenu;
+ GMenu *pSubmenu;
+ guint nExportId;
+};
+
+struct _IndicatorKeyboardServicePrivate
+{
+ GCancellable *pCancellable;
+ guint nOwnId;
+ guint nActionsId;
+ GDBusConnection *pConnection;
+ gboolean bMenusBuilt;
+ struct ProfileMenuInfo lMenus[N_PROFILES];
+ GSimpleActionGroup *pActionGroup;
+ GSimpleAction *pHeaderAction;
+ GSimpleAction *pSettingsAction;
+ GSimpleAction *pLayoutAction;
+ GMenu *pLayoutSection;
+ Keyboard *pKeyboard;
+};
+
+typedef IndicatorKeyboardServicePrivate priv_t;
+
+G_DEFINE_TYPE_WITH_PRIVATE(IndicatorKeyboardService, indicator_keyboard_service, G_TYPE_OBJECT)
+
+static GVariant* createHeaderState(IndicatorKeyboardService *self)
+{
+ GVariantBuilder cBuilder;
+ g_variant_builder_init(&cBuilder, G_VARIANT_TYPE("a{sv}"));
+ g_variant_builder_add(&cBuilder, "{sv}", "title", g_variant_new_string(_("Keyboard")));
+ g_variant_builder_add(&cBuilder, "{sv}", "visible", g_variant_new_boolean(TRUE));
+
+ gchar *sLanguage;
+ keyboard_GetLayout(self->pPrivate->pKeyboard, -1, &sLanguage, NULL);
+
+ gchar *sIcon = g_strconcat("ayatana-indicator-keyboard-", sLanguage, NULL);
+ g_free(sLanguage);
+
+ GIcon *pIcon = g_themed_icon_new_with_default_fallbacks(sIcon);
+ g_free(sIcon);
+ g_variant_builder_add(&cBuilder, "{sv}", "accessible-desc", g_variant_new_string(_("Current keyboard layout")));
+
+ if (pIcon)
+ {
+ GVariant *pSerialized = g_icon_serialize(pIcon);
+
+ if (pSerialized != NULL)
+ {
+ g_variant_builder_add(&cBuilder, "{sv}", "icon", pSerialized);
+ g_variant_unref(pSerialized);
+ }
+
+ g_object_unref(pIcon);
+ }
+
+ return g_variant_builder_end(&cBuilder);
+}
+
+static GMenuModel* createDesktopLayoutSection(IndicatorKeyboardService *self, int nProfile)
+{
+ self->pPrivate->pLayoutSection = g_menu_new();
+
+ guint nLayouts = keyboard_GetNumLayouts(self->pPrivate->pKeyboard);
+
+ for (guint nLayout = 0; nLayout < nLayouts; nLayout++)
+ {
+ gchar *sLanguage;
+ gchar *sDescription;
+ keyboard_GetLayout(self->pPrivate->pKeyboard, nLayout, &sLanguage, &sDescription);
+ GMenuItem *pItem = g_menu_item_new(sDescription, NULL);
+ g_free(sDescription);
+ g_menu_item_set_action_and_target_value(pItem, "indicator.layout", g_variant_new_byte(nLayout));
+ g_menu_item_set_attribute_value(pItem, "x-ayatana-layout", g_variant_new_byte(nLayout));
+ gchar *sIcon = g_strconcat("ayatana-indicator-keyboard-", sLanguage, NULL);
+ g_free(sLanguage);
+ GIcon *pIcon = g_themed_icon_new_with_default_fallbacks(sIcon);
+ g_free(sIcon);
+ GVariant *pSerialized = g_icon_serialize(pIcon);
+
+ if (pSerialized != NULL)
+ {
+ g_menu_item_set_attribute_value(pItem, G_MENU_ATTRIBUTE_ICON, pSerialized);
+ g_variant_unref(pSerialized);
+ }
+
+ g_object_unref(pIcon);
+
+ g_menu_append_item(self->pPrivate->pLayoutSection, pItem);
+ g_object_unref(pItem);
+ }
+
+ return G_MENU_MODEL(self->pPrivate->pLayoutSection);
+}
+
+static GMenuModel* createDesktopSettingsSection(IndicatorKeyboardService *self)
+{
+ GMenu * pMenu = g_menu_new();
+ g_menu_append(pMenu, _("Keyboard Settings..."), "indicator.settings");
+
+ return G_MENU_MODEL(pMenu);
+}
+
+static void rebuildSection(GMenu *pMenu, int nPos, GMenuModel *pModel)
+{
+ g_menu_remove(pMenu, nPos);
+ g_menu_insert_section(pMenu, nPos, NULL, pModel);
+ g_object_unref(pModel);
+}
+
+static void rebuildNow(IndicatorKeyboardService *self, guint nSections)
+{
+ struct ProfileMenuInfo *pInfoDesktop = &self->pPrivate->lMenus[PROFILE_DESKTOP];
+ struct ProfileMenuInfo *pInfoGreeter = &self->pPrivate->lMenus[PROFILE_GREETER];
+
+ if (nSections & SECTION_HEADER)
+ {
+ g_simple_action_set_state(self->pPrivate->pHeaderAction, createHeaderState(self));
+ }
+
+ if (!self->pPrivate->bMenusBuilt)
+ {
+ return;
+ }
+
+ if (nSections & SECTION_LAYOUTS)
+ {
+ rebuildSection(pInfoDesktop->pSubmenu, 0, createDesktopLayoutSection(self, PROFILE_DESKTOP));
+ rebuildSection(pInfoGreeter->pSubmenu, 0, createDesktopLayoutSection(self, PROFILE_GREETER));
+ }
+
+ if (nSections & SECTION_SETTINGS)
+ {
+ rebuildSection(pInfoDesktop->pSubmenu, 1, createDesktopSettingsSection(self));
+ }
+}
+
+static void createMenu(IndicatorKeyboardService *self, int nProfile)
+{
+ GMenu *pMenu;
+ GMenu *pSubmenu;
+ GMenuItem *pItem;
+ GMenuModel *lSections[16];
+ guint nSection = 0;
+
+ g_assert(0 <= nProfile && nProfile < N_PROFILES);
+ g_assert(self->pPrivate->lMenus[nProfile].pMenu == NULL);
+
+ // Build the sections
+ if (nProfile == PROFILE_PHONE)
+ {
+ lSections[nSection++] = createDesktopLayoutSection(self, nProfile);
+ lSections[nSection++] = createDesktopSettingsSection(self);
+ }
+ else if (nProfile == PROFILE_DESKTOP)
+ {
+ lSections[nSection++] = createDesktopLayoutSection(self, nProfile);
+ lSections[nSection++] = createDesktopSettingsSection(self);
+ }
+ else if (nProfile == PROFILE_GREETER)
+ {
+ lSections[nSection++] = createDesktopLayoutSection(self, nProfile);
+ }
+
+ // Add sections to the submenu
+ pSubmenu = g_menu_new();
+
+ for (guint i = 0; i < nSection; ++i)
+ {
+ g_menu_append_section(pSubmenu, NULL, lSections[i]);
+ g_object_unref(lSections[i]);
+ }
+
+ // Add submenu to the header
+ pItem = g_menu_item_new(NULL, "indicator._header");
+ g_menu_item_set_attribute(pItem, "x-ayatana-type", "s", "org.ayatana.indicator.root");
+ g_menu_item_set_submenu(pItem, G_MENU_MODEL(pSubmenu));
+ g_object_unref(pSubmenu);
+
+ // Add header to the menu
+ pMenu = g_menu_new();
+ g_menu_append_item(pMenu, pItem);
+ g_object_unref(pItem);
+
+ self->pPrivate->lMenus[nProfile].pMenu = pMenu;
+ self->pPrivate->lMenus[nProfile].pSubmenu = pSubmenu;
+}
+
+static void onLayoutChanged(Keyboard *pKeyboard, gpointer pData)
+{
+ IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE(pData);
+ rebuildNow(self, SECTION_HEADER);
+}
+
+static void onConfigChanged(Keyboard *pKeyboard, gpointer pData)
+{
+ IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE(pData);
+ rebuildNow(self, SECTION_LAYOUTS);
+}
+
+static void onLayoutSelected(GSimpleAction *pAction, GVariant *pVariant, gpointer pData)
+{
+ IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE(pData);
+ const guint8 nLayout = g_variant_get_byte(pVariant);
+ keyboard_SetLayout(self->pPrivate->pKeyboard, nLayout);
+}
+
+static void onSettings(GSimpleAction *pAction, GVariant *pVariant, gpointer pUserData)
+{
+ if (is_mate())
+ {
+ execute_command("mate-keyboard-properties");
+ }
+}
+
+static void initActions(IndicatorKeyboardService *self)
+{
+ GSimpleAction *pAction;
+ self->pPrivate->pActionGroup = g_simple_action_group_new();
+
+ pAction = g_simple_action_new_stateful("_header", NULL, createHeaderState(self));
+ g_action_map_add_action(G_ACTION_MAP(self->pPrivate->pActionGroup), G_ACTION(pAction));
+ self->pPrivate->pHeaderAction = pAction;
+
+ pAction = g_simple_action_new("layout", G_VARIANT_TYPE_BYTE);
+ g_action_map_add_action(G_ACTION_MAP(self->pPrivate->pActionGroup), G_ACTION(pAction));
+ self->pPrivate->pLayoutAction = pAction;
+ g_signal_connect(pAction, "activate", G_CALLBACK(onLayoutSelected), self);
+
+ pAction = g_simple_action_new("settings", NULL);
+ g_action_map_add_action(G_ACTION_MAP(self->pPrivate->pActionGroup), G_ACTION(pAction));
+ self->pPrivate->pSettingsAction = pAction;
+ g_signal_connect(pAction, "activate", G_CALLBACK(onSettings), self);
+}
+
+static void onBusAcquired(GDBusConnection *pConnection, const gchar *sName, gpointer pData)
+{
+ IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE(pData);
+
+ g_debug("bus acquired: %s", sName);
+
+ self->pPrivate->pConnection = (GDBusConnection*)g_object_ref(G_OBJECT (pConnection));
+ guint nId;
+ GError *pError = NULL;
+
+ // Export the actions
+ if ((nId = g_dbus_connection_export_action_group(pConnection, BUS_PATH, G_ACTION_GROUP(self->pPrivate->pActionGroup), &pError)))
+ {
+ self->pPrivate->nActionsId = nId;
+ }
+ else
+ {
+ g_warning("cannot export action group: %s", pError->message);
+ g_clear_error(&pError);
+ }
+
+ GString *pPath = g_string_new(NULL);
+
+ // Export the menus
+ for (int nProfile = 0; nProfile < N_PROFILES; ++nProfile)
+ {
+ struct ProfileMenuInfo *pInfo = &self->pPrivate->lMenus[nProfile];
+
+ g_string_printf(pPath, "%s/%s", BUS_PATH, m_lMenuNames[nProfile]);
+
+ if ((nId = g_dbus_connection_export_menu_model(pConnection, pPath->str, G_MENU_MODEL(pInfo->pMenu), &pError)))
+ {
+ pInfo->nExportId = nId;
+ }
+ else
+ {
+ g_warning("cannot export %s menu: %s", pPath->str, pError->message);
+ g_clear_error (&pError);
+ }
+ }
+
+ g_string_free(pPath, TRUE);
+}
+
+static void unexport(IndicatorKeyboardService *self)
+{
+ // Unexport the menus
+ for (int nProfile = 0; nProfile < N_PROFILES; ++nProfile)
+ {
+ guint *nId = &self->pPrivate->lMenus[nProfile].nExportId;
+
+ if (*nId)
+ {
+ g_dbus_connection_unexport_menu_model(self->pPrivate->pConnection, *nId);
+ *nId = 0;
+ }
+ }
+
+ // Unexport the actions
+ if (self->pPrivate->nActionsId)
+ {
+ g_dbus_connection_unexport_action_group(self->pPrivate->pConnection, self->pPrivate->nActionsId);
+ self->pPrivate->nActionsId = 0;
+ }
+}
+
+static void onNameLost(GDBusConnection *pConnection, const gchar *sName, gpointer pData)
+{
+ IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE(pData);
+
+ g_debug("%s %s name lost %s", G_STRLOC, G_STRFUNC, sName);
+
+ unexport(self);
+}
+
+static void onDispose(GObject *pObject)
+{
+ IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE(pObject);
+
+ if (self->pPrivate->pKeyboard != NULL)
+ {
+ g_object_unref(G_OBJECT(self->pPrivate->pKeyboard));
+ self->pPrivate->pKeyboard = NULL;
+ }
+
+ if (self->pPrivate->nOwnId)
+ {
+ g_bus_unown_name(self->pPrivate->nOwnId);
+ self->pPrivate->nOwnId = 0;
+ }
+
+ unexport(self);
+
+ if (self->pPrivate->pCancellable != NULL)
+ {
+ g_cancellable_cancel(self->pPrivate->pCancellable);
+ g_clear_object(&self->pPrivate->pCancellable);
+ }
+
+ g_clear_object (&self->pPrivate->pSettingsAction);
+ g_clear_object (&self->pPrivate->pLayoutAction);
+ g_clear_object (&self->pPrivate->pHeaderAction);
+ g_clear_object (&self->pPrivate->pActionGroup);
+ g_clear_object (&self->pPrivate->pConnection);
+
+ G_OBJECT_CLASS(indicator_keyboard_service_parent_class)->dispose(pObject);
+}
+
+static void indicator_keyboard_service_init(IndicatorKeyboardService *self)
+{
+ self->pPrivate = indicator_keyboard_service_get_instance_private(self);
+ self->pPrivate->pCancellable = g_cancellable_new();
+ self->pPrivate->pKeyboard = keyboard_new();
+ g_signal_connect(self->pPrivate->pKeyboard, KEYBOARD_LAYOUT_CHANGED, G_CALLBACK(onLayoutChanged), self);
+ g_signal_connect(self->pPrivate->pKeyboard, KEYBOARD_CONFIG_CHANGED, G_CALLBACK(onConfigChanged), self);
+ initActions(self);
+
+ for (int nProfile = 0; nProfile < N_PROFILES; ++nProfile)
+ {
+ createMenu(self, nProfile);
+ }
+
+ self->pPrivate->bMenusBuilt = TRUE;
+ self->pPrivate->nOwnId = g_bus_own_name(G_BUS_TYPE_SESSION, BUS_NAME, G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, onBusAcquired, NULL, onNameLost, self, NULL);
+}
+
+static void indicator_keyboard_service_class_init(IndicatorKeyboardServiceClass *klass)
+{
+ GObjectClass *pClass = G_OBJECT_CLASS(klass);
+ pClass->dispose = onDispose;
+ m_nSignal = g_signal_new("name-lost", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(IndicatorKeyboardServiceClass, pNameLost), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+}
+
+IndicatorKeyboardService *indicator_keyboard_service_new()
+{
+ GObject *pObject = g_object_new(INDICATOR_TYPE_KEYBOARD_SERVICE, NULL);
+
+ return INDICATOR_KEYBOARD_SERVICE(pObject);
+}
+
+void indicator_keyboard_service_AddKeyboardSource(IndicatorKeyboardService *self)
+{
+ keyboard_AddSource(self->pPrivate->pKeyboard);
+}
diff --git a/src/service.h b/src/service.h
new file mode 100644
index 00000000..9a758568
--- /dev/null
+++ b/src/service.h
@@ -0,0 +1,36 @@
+#ifndef __INDICATOR_KEYBOARD_SERVICE_H__
+#define __INDICATOR_KEYBOARD_SERVICE_H__
+
+#include <glib.h>
+#include <glib-object.h>
+#include "keyboard.h"
+
+G_BEGIN_DECLS
+
+#define INDICATOR_KEYBOARD_SERVICE(o) (G_TYPE_CHECK_INSTANCE_CAST((o), INDICATOR_TYPE_KEYBOARD_SERVICE, IndicatorKeyboardService))
+#define INDICATOR_TYPE_KEYBOARD_SERVICE (indicator_keyboard_service_get_type())
+#define INDICATOR_IS_KEYBOARD_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), INDICATOR_TYPE_KEYBOARD_SERVICE))
+
+typedef struct _IndicatorKeyboardService IndicatorKeyboardService;
+typedef struct _IndicatorKeyboardServiceClass IndicatorKeyboardServiceClass;
+typedef struct _IndicatorKeyboardServicePrivate IndicatorKeyboardServicePrivate;
+
+struct _IndicatorKeyboardService
+{
+ GObject parent;
+ IndicatorKeyboardServicePrivate *pPrivate;
+};
+
+struct _IndicatorKeyboardServiceClass
+{
+ GObjectClass parent_class;
+ void (*pNameLost)(IndicatorKeyboardService *self);
+};
+
+GType indicator_keyboard_service_get_type(void);
+IndicatorKeyboardService* indicator_keyboard_service_new();
+void indicator_keyboard_service_AddKeyboardSource(IndicatorKeyboardService *pService);
+
+G_END_DECLS
+
+#endif /* __INDICATOR_KEYBOARD_SERVICE_H__ */
diff --git a/src/source.vala b/src/source.vala
deleted file mode 100644
index b7d7a971..00000000
--- a/src/source.vala
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-public class Indicator.Keyboard.Source : Object {
-
- private static Gnome.XkbInfo? xkb_info;
- private static IBus.Bus? ibus_bus;
- private static Fcitx.InputMethod? fcitx_proxy;
-
- private string? xkb;
- private string? ibus;
- private string? fcitx;
-
- private string? _name;
- private string? _short_name;
- private string? _layout;
- private string? _variant;
- private Icon? _icon;
- private uint _subscript;
- private bool _show_subscript;
- private bool _use_gtk;
-
- public string? name {
- get { if (_name == null) { _name = _get_name (); } return _name; }
- }
-
- public string? short_name {
- get { if (_short_name == null) { _short_name = _get_short_name (); } return _short_name; }
- }
-
- public string? layout {
- get { if (_layout == null) { _layout = _get_layout (); } return _layout; }
- }
-
- public string? variant {
- get { if (_variant == null) { _variant = _get_variant (); } return _variant; }
- }
-
- public Icon? icon {
- get { if (_icon == null) { _icon = _get_icon (); } return _icon; }
- set { _icon = value; }
- }
-
- public uint subscript {
- get { return _subscript; }
- set { _subscript = value; icon = null; }
- }
-
- public bool show_subscript {
- get { return _show_subscript; }
- set { _show_subscript = value; icon = null; }
- }
-
- public bool use_gtk {
- get { return _use_gtk; }
- construct set { _use_gtk = value; icon = null; }
- }
-
- public bool is_xkb {
- get { return xkb != null; }
- }
-
- public bool is_ibus {
- get { return ibus != null; }
- }
-
- public bool is_fcitx {
- get { return fcitx != null; }
- }
-
- public Source (Variant variant, bool use_gtk = false) {
- Object (use_gtk: use_gtk);
-
- if (variant.is_of_type (new VariantType ("(ss)"))) {
- unowned string type;
- unowned string name;
-
- variant.get ("(&s&s)", out type, out name);
-
- if (type == "xkb") {
- xkb = name;
- } else if (type == "ibus") {
- ibus = name;
- } else if (type == "fcitx") {
- fcitx = name;
- }
- } else if (variant.is_of_type (new VariantType ("a{ss}"))) {
- foreach (var pair in variant) {
- unowned string key;
- unowned string value;
-
- ((!) pair).get ("{&s&s}", out key, out value);
-
- if (key == "xkb") {
- xkb = value;
- } else if (key == "ibus") {
- ibus = value;
- } else if (key == "fcitx") {
- fcitx = value;
- }
- }
- }
- }
-
- private static Gnome.XkbInfo get_xkb_info () {
- if (xkb_info == null) {
- xkb_info = new Gnome.XkbInfo ();
- }
-
- return (!) xkb_info;
- }
-
- private static IBus.Bus get_ibus_bus () {
- if (ibus_bus == null) {
- IBus.init ();
- ibus_bus = new IBus.Bus ();
- }
-
- return (!) ibus_bus;
- }
-
- private static Fcitx.InputMethod get_fcitx_proxy () throws Error {
- if (fcitx_proxy == null) {
- fcitx_proxy = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0);
- }
-
- return (!) fcitx_proxy;
- }
-
- private IBus.EngineDesc? get_engine () {
- IBus.EngineDesc? engine = null;
-
- if (ibus != null) {
- var names = new string[2];
- names[0] = (!) ibus;
-
- var engines = get_ibus_bus ().get_engines_by_names (names);
-
- if (engines.length > 0) {
- engine = engines[0];
- }
- }
-
- return engine;
- }
-
- protected virtual string? _get_name () {
- string? name = null;
-
- if (xkb != null) {
- string? display_name = null;
- string? layout = null;
-
- get_xkb_info ().get_layout_info ((!) xkb, out display_name, null, out layout, null);
-
- var has_display_name = display_name != null && ((!) display_name).get_char () != '\0';
- var has_layout = layout != null && ((!) layout).get_char () != '\0';
-
- if (has_display_name) {
- name = display_name;
- } else if (has_layout) {
- string? language = Xkl.get_language_name ((!) layout);
- string? country = Xkl.get_country_name ((!) layout);
- var has_language = language != null && ((!) language).get_char () != '\0';
- var has_country = country != null && ((!) country).get_char () != '\0';
-
- if (has_language && has_country) {
- name = @"$((!) language) ($((!) country))";
- } else if (has_language) {
- name = language;
- } else if (has_country) {
- name = country;
- }
- }
-
- if (name == null || ((!) name).get_char () == '\0') {
- name = xkb;
- }
- } else if (ibus != null) {
- var engine = get_engine ();
-
- if (engine != null) {
- string? language = ((!) engine).get_language ();
- string? display_name = ((!) engine).get_longname ();
- var has_language = language != null && ((!) language).get_char () != '\0';
- var has_display_name = display_name != null && ((!) display_name).get_char () != '\0';
-
- if (has_language) {
- language = Xkl.get_language_name ((!) language);
- has_language = language != null && ((!) language).get_char () != '\0';
- }
-
- if (has_language && has_display_name) {
- name = @"$((!) language) ($((!) display_name))";
- } else if (has_language) {
- name = language;
- } else if (has_display_name) {
- name = display_name;
- }
- }
-
- if (name == null || ((!) name).get_char () == '\0') {
- name = ibus;
- }
- } else if (fcitx != null) {
- try {
- var input_methods = get_fcitx_proxy ().get_imlist_nofree ();
-
- for (var i = 0; i < input_methods.length; i++) {
- if (input_methods.get (i).unique_name == (!) fcitx) {
- name = input_methods.get (i).name;
- break;
- }
- }
- } catch (Error error) {
- warning ("error: %s", error.message);
- }
-
- if (name == null || ((!) name).get_char () == '\0') {
- name = fcitx;
- }
- }
-
- return name;
- }
-
- protected virtual string? _get_short_name () {
- string? short_name = null;
-
- if (xkb != null) {
- get_xkb_info ().get_layout_info ((!) xkb, null, out short_name, null, null);
-
- if (short_name == null || ((!) short_name).get_char () == '\0') {
- short_name = xkb;
- }
- } else if (ibus != null) {
- var engine = get_engine ();
-
- if (engine != null) {
- short_name = ((!) engine).get_name ();
- }
-
- if (short_name == null || ((!) short_name).get_char () == '\0') {
- short_name = ibus;
- }
- } else if (fcitx != null) {
- try {
- var input_methods = get_fcitx_proxy ().get_imlist_nofree ();
-
- for (var i = 0; i < input_methods.length; i++) {
- if (input_methods.get (i).unique_name == (!) fcitx) {
- short_name = input_methods.get (i).langcode;
- break;
- }
- }
- } catch (Error error) {
- warning ("error: %s", error.message);
- }
-
- if (short_name == null || ((!) short_name).get_char () == '\0') {
- short_name = fcitx;
- }
- }
-
- return abbreviate (short_name);
- }
-
- protected virtual string? _get_layout () {
- string? layout = null;
-
- if (xkb != null) {
- get_xkb_info ().get_layout_info ((!) xkb, null, null, out layout, null);
- }
-
- var has_layout = layout != null && ((!) layout).get_char () != '\0';
-
- if (!has_layout) {
- var engine = get_engine ();
-
- if (engine != null) {
- layout = ((!) engine).get_layout ();
- }
- }
-
- if (layout == null || ((!) layout).get_char () == '\0') {
- layout = xkb;
- }
-
- return layout;
- }
-
- protected virtual string? _get_variant () {
- string? variant = null;
-
- if (xkb != null) {
- get_xkb_info ().get_layout_info ((!) xkb, null, null, null, out variant);
- }
-
- var has_variant = variant != null && ((!) variant).get_char () != '\0';
-
- if (!has_variant) {
- var engine = get_engine ();
-
- if (engine != null) {
- variant = ((!) engine).get_layout_variant ();
- }
- }
-
- if (variant == null || ((!) variant).get_char () == '\0') {
- variant = null;
- }
-
- return variant;
- }
-
- private Gtk.StyleContext? get_style_context () {
- Gtk.StyleContext? context = null;
-
- if (_use_gtk) {
- Gdk.Screen? screen = Gdk.Screen.get_default ();
-
- if (screen != null) {
- var style_context = new Gtk.StyleContext ();
- style_context.set_screen ((!) screen);
-
- var path = new Gtk.WidgetPath ();
- path.append_type (typeof (Gtk.MenuItem));
- style_context.set_path (path);
-
- context = style_context;
- }
- }
-
- return context;
- }
-
- protected virtual Icon? create_icon () {
- Icon? icon = null;
-
- var style = get_style_context ();
-
- if (style != null) {
- const int W = 22;
- const int H = 22;
- const int w = 20;
- const int h = 20;
- const double R = 2.0;
- const double TEXT_SIZE = 12.0;
- const double SUBSCRIPT_SIZE = 8.0;
-
- Pango.FontDescription description;
- var colour = ((!) style).get_color (Gtk.StateFlags.NORMAL);
- colour = { 0.5, 0.5, 0.5, 1.0 };
- ((!) style).get (Gtk.StateFlags.NORMAL, Gtk.STYLE_PROPERTY_FONT, out description);
-
- var surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, W, H);
- var context = new Cairo.Context (surface);
-
- context.translate (0.5 * (W - w), 0.5 * (H - h));
-
- context.new_sub_path ();
- context.arc (R, R, R, Math.PI, -0.5 * Math.PI);
- context.arc (w - R, R, R, -0.5 * Math.PI, 0);
- context.arc (w - R, h - R, R, 0, 0.5 * Math.PI);
- context.arc (R, h - R, R, 0.5 * Math.PI, Math.PI);
- context.close_path ();
-
- context.set_source_rgba (colour.red, colour.green, colour.blue, colour.alpha);
- context.fill ();
- context.set_operator (Cairo.Operator.CLEAR);
-
- if (short_name != null) {
- var text_layout = Pango.cairo_create_layout (context);
- text_layout.set_alignment (Pango.Alignment.CENTER);
- description.set_absolute_size (Pango.units_from_double (TEXT_SIZE));
- text_layout.set_font_description (description);
- text_layout.set_text ((!) short_name, -1);
- Pango.cairo_update_layout (context, text_layout);
- int text_width;
- int text_height;
- text_layout.get_pixel_size (out text_width, out text_height);
-
- if (_show_subscript) {
- var subscript_layout = Pango.cairo_create_layout (context);
- subscript_layout.set_alignment (Pango.Alignment.CENTER);
- description.set_absolute_size (Pango.units_from_double (SUBSCRIPT_SIZE));
- subscript_layout.set_font_description (description);
- subscript_layout.set_text (@"$_subscript", -1);
- Pango.cairo_update_layout (context, subscript_layout);
- int subscript_width;
- int subscript_height;
- subscript_layout.get_pixel_size (out subscript_width, out subscript_height);
-
- context.save ();
- context.translate ((w - (text_width + subscript_width)) / 2, (h - text_height) / 2);
- Pango.cairo_layout_path (context, text_layout);
- context.fill ();
- context.restore ();
-
- context.save ();
- context.translate ((w + (text_width - subscript_width)) / 2, (h + text_height) / 2 - subscript_height);
- Pango.cairo_layout_path (context, subscript_layout);
- context.fill ();
- context.restore ();
- } else {
- context.save ();
- context.translate ((w - text_width) / 2, (h - text_height) / 2);
- Pango.cairo_layout_path (context, text_layout);
- context.fill ();
- context.restore ();
- }
- }
-
- var buffer = new ByteArray ();
-
- surface.write_to_png_stream ((data) => {
- buffer.append (data);
- return Cairo.Status.SUCCESS;
- });
-
- icon = new BytesIcon (ByteArray.free_to_bytes ((owned) buffer));
- }
-
- return icon;
- }
-
- private Icon? _get_icon () {
- Icon? icon = null;
-
- var engine = get_engine ();
-
- if (engine != null) {
- string? icon_name = ((!) engine).get_icon ();
- var has_icon_name = icon_name != null && ((!) icon_name).get_char () != '\0';
-
- if (has_icon_name) {
- try {
- icon = Icon.new_for_string ((!) icon_name);
- } catch (Error error) {
- warning ("error: %s", error.message);
- }
- }
- }
-
- if (icon == null && short_name != null) {
- string icon_name;
-
- if (_show_subscript) {
- icon_name = @"indicator-keyboard-$((!) short_name)-$_subscript";
- } else {
- icon_name = @"indicator-keyboard-$((!) short_name)";
- }
-
- if (_use_gtk) {
- var icon_theme = Gtk.IconTheme.get_default ();
- Gtk.IconInfo? icon_info = icon_theme.lookup_icon (icon_name, 22, 0);
-
- if (icon_info != null) {
- icon = new ThemedIcon (icon_name);
- }
- } else {
- icon = new ThemedIcon (icon_name);
- }
- }
-
- if (icon == null) {
- icon = create_icon ();
- }
-
- return icon;
- }
-}
diff --git a/src/unity-greeter.vala b/src/unity-greeter.vala
deleted file mode 100644
index 5ca398ec..00000000
--- a/src/unity-greeter.vala
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-[DBus (name="org.ayatana.UnityGreeter.List")]
-public interface UnityGreeter : Object {
-
- public abstract string get_active_entry () throws IOError;
- public abstract void set_active_entry (string entry_name) throws IOError;
-
- public signal void entry_selected (string entry_name);
-}
diff --git a/src/unity-session.vala b/src/unity-session.vala
deleted file mode 100644
index 15337c36..00000000
--- a/src/unity-session.vala
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2014 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-[DBus (name="org.ayatana.Unity.Session")]
-public interface UnitySession : Object {
-
- public signal void locked ();
- public signal void unlocked ();
-}
diff --git a/src/utils.c b/src/utils.c
new file mode 100644
index 00000000..82f9cff0
--- /dev/null
+++ b/src/utils.c
@@ -0,0 +1,167 @@
+/*
+ * Copyright 2021 Marius Gripsgard <marius@ubports.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "utils.h"
+
+#include <string.h>
+
+#ifdef HAS_URLDISPATCHER
+# include <url-dispatcher.h>
+#endif
+
+// TODO: make case insensitive
+gboolean
+is_xdg_current_desktop (const gchar* desktop)
+{
+ const gchar *xdg_current_desktop;
+ gchar **desktop_names;
+ int i;
+
+ xdg_current_desktop = g_getenv ("XDG_CURRENT_DESKTOP");
+ if (xdg_current_desktop != NULL) {
+ desktop_names = g_strsplit (xdg_current_desktop, ":", 0);
+ for (i = 0; desktop_names[i]; ++i) {
+ if (!g_strcmp0 (desktop_names[i], desktop)) {
+ g_strfreev (desktop_names);
+ return TRUE;
+ }
+ }
+ g_strfreev (desktop_names);
+ }
+ return FALSE;
+}
+
+gboolean
+is_lomiri ()
+{
+ // For legacy reasons keep the MIR_SOCKET hack
+ return (g_getenv ("MIR_SOCKET") != NULL ||
+ is_xdg_current_desktop(DESKTOP_LOMIRI));
+}
+
+gboolean
+is_gnome ()
+{
+ return is_xdg_current_desktop(DESKTOP_GNOME);
+}
+
+gboolean
+is_unity ()
+{
+ return is_xdg_current_desktop(DESKTOP_UNITY);
+}
+
+gboolean
+is_mate ()
+{
+ return is_xdg_current_desktop(DESKTOP_MATE);
+}
+
+gboolean
+is_xfce ()
+{
+ return is_xdg_current_desktop(DESKTOP_XFCE);
+}
+
+gboolean
+is_pantheon ()
+{
+ return is_xdg_current_desktop(DESKTOP_PANTHEON);
+}
+
+// Bit of a hacky way? should use xdg open
+char *
+find_browser ()
+{
+ static char * browser_path = NULL;
+ char* tmp_browser_path;
+ gchar **browser_names;
+
+ int i;
+
+ if (browser_path == NULL)
+ {
+ browser_names = g_strsplit ("x-www-browser,google-chrome,firefox,chromium", ",", 0);
+
+ for (i = 0; browser_names[i]; ++i) {
+ tmp_browser_path = g_find_program_in_path (browser_names[i]);
+
+ if (tmp_browser_path) {
+ browser_path = g_strdup (tmp_browser_path);
+ g_free (tmp_browser_path);
+ g_strfreev (browser_names);
+ break;
+ }
+ }
+ }
+
+ return browser_path;
+}
+
+gboolean
+execute_command (const gchar * cmd)
+{
+ GError * err = NULL;
+
+ g_debug ("Issuing command '%s'", cmd);
+
+ if (!g_spawn_command_line_async (cmd, &err))
+ {
+ g_warning ("Unable to start %s: %s", cmd, err->message);
+ g_error_free (err);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+open_url (const gchar * url)
+{
+ char * browser = NULL;
+
+ if (is_lomiri())
+ {
+#ifdef HAS_URLDISPATCHER
+ url_dispatch_send("settings:///system/battery", NULL, NULL);
+ return TRUE;
+#else
+ g_warning("Built without url-dispatcher, is not able to open url");
+#endif
+ }
+
+ if (browser == NULL)
+ browser = find_browser();
+
+ if (browser != NULL)
+ return execute_command(g_strdup_printf("%s '%s'", browser, url));
+ else
+ return FALSE;
+
+}
+
+gboolean
+have_program (const gchar * program)
+{
+ gchar *path;
+ gboolean have;
+
+ path = g_find_program_in_path(program);
+ have = path != NULL;
+ g_free(path);
+
+ return have;
+}
diff --git a/src/utils.h b/src/utils.h
new file mode 100644
index 00000000..52e491f2
--- /dev/null
+++ b/src/utils.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2021 Marius Gripsgard <marius@ubports.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include <glib.h>
+
+#define DESKTOP_LOMIRI "Lomiri"
+#define DESKTOP_UNITY "Unity"
+#define DESKTOP_MATE "MATE"
+#define DESKTOP_GNOME "GNOME"
+#define DESKTOP_XFCE "XFCE"
+#define DESKTOP_PANTHEON "PANTHEON"
+
+gboolean is_lomiri();
+gboolean is_unity();
+gboolean is_gnome();
+gboolean is_mate();
+gboolean is_xfce();
+gboolean is_pantheon();
+
+gboolean execute_command(const gchar * cmd);
+gboolean open_url(const gchar * url);
+gboolean have_program(const gchar * program);
diff --git a/src/window-stack.vala b/src/window-stack.vala
deleted file mode 100644
index a943da6a..00000000
--- a/src/window-stack.vala
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-public struct WindowInfo {
-
- public uint window_id;
- public string app_id;
- public bool focused;
- public uint stage;
-}
-
-[DBus (name="org.ayatana.Unity.WindowStack")]
-public interface WindowStack : Object {
-
- public abstract string get_app_id_from_pid (uint pid) throws IOError;
- public abstract string[] get_window_properties (uint window_id, string app_id, string[] property_names) throws IOError;
- public abstract WindowInfo[] get_window_stack () throws IOError;
-
- public signal void focused_window_changed (uint window_id, string app_id, uint stage);
- public signal void window_created (uint window_id, string app_id);
- public signal void window_destroyed (uint window_id, string app_id);
-}
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index f3be1539..00000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-SUBDIRS = autopilot
-TESTS = indicator-keyboard-test
-
-check_PROGRAMS = indicator-keyboard-tests
-
-AM_CFLAGS = -w
-AM_LDFLAGS = -lm
-AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \
- --vapidir $(top_srcdir)/deps
-
-indicator_keyboard_tests_SOURCES = main.vala \
- fixture.vala \
- config.vala
-indicator_keyboard_tests_VALAFLAGS = $(AM_VALAFLAGS) \
- --pkg gio-2.0
-indicator_keyboard_tests_CFLAGS = $(AM_CFLAGS) \
- $(GIO_CFLAGS)
-indicator_keyboard_tests_LDFLAGS = $(AM_LDFLAGS) \
- $(GIO_LIBS)
diff --git a/tests/autopilot/Makefile.am b/tests/autopilot/Makefile.am
deleted file mode 100644
index 2af361a7..00000000
--- a/tests/autopilot/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-autopilotdir = $(pythondir)/indicator_keyboard
-autopilot_DATA = __init__.py
-
-autopilottestsdir = $(autopilotdir)/tests
-autopilottests_DATA = tests/__init__.py tests/test_indicator_keyboard.py
diff --git a/tests/autopilot/__init__.py b/tests/autopilot/__init__.py
deleted file mode 100644
index c9bdd5c3..00000000
--- a/tests/autopilot/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
-# Copyright 2013 Canonical
-#
-# This file is part of indicator-keyboard.
-
-"""indicator-keyboard autopilot tests - top level package."""
diff --git a/tests/autopilot/test.sh b/tests/autopilot/test.sh
deleted file mode 100755
index 7c3a0ad4..00000000
--- a/tests/autopilot/test.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-for name in `autopilot list tests | head -n -3 | tail -n +3`
-do
- autopilot run $name || exit 1
-done
diff --git a/tests/autopilot/tests/Makefile.am b/tests/autopilot/tests/Makefile.am
deleted file mode 100644
index 06deff91..00000000
--- a/tests/autopilot/tests/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-check_PYTHON = __init__.py test_indicator_keyboard.py
diff --git a/tests/autopilot/tests/__init__.py b/tests/autopilot/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/autopilot/tests/__init__.py
+++ /dev/null
diff --git a/tests/autopilot/tests/test_indicator_keyboard.py b/tests/autopilot/tests/test_indicator_keyboard.py
deleted file mode 100644
index 0ef197db..00000000
--- a/tests/autopilot/tests/test_indicator_keyboard.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import autopilot.introspection.gtk
-import os
-import pyatspi.registry
-import pyatspi.utils
-import time
-import unity.tests
-
-def print_accessible(root, level=0):
- print level * ' ', root
-
- for node in root:
- print_accessible(node, level + 1)
-
-def get_accessible_with_name_and_role(root, name, role):
- is_accessible = lambda a: a.name == name and a.get_role_name() == role
- return pyatspi.utils.findDescendant(root, is_accessible, True);
-
-def get_panel_accessible(root):
- return get_accessible_with_name_and_role(root, 'unity-panel-service', 'application')
-
-def is_indicator_accessible(root):
- return root.get_role_name() == 'panel' and \
- len(root) == 1 and \
- root[0].get_role_name() == 'image' and \
- len(root[0]) == 1 and \
- root[0][0].get_role_name() == 'menu' and \
- len(root[0][0]) > 3 and \
- root[0][0][-3].name == 'Character Map' and \
- root[0][0][-3].get_role_name() == 'check menu item' and \
- root[0][0][-2].name == 'Keyboard Layout Chart' and \
- root[0][0][-2].get_role_name() == 'check menu item' and \
- root[0][0][-1].name == 'Text Entry Settings...' and \
- root[0][0][-1].get_role_name() == 'check menu item'
-
-def get_indicator_accessible(root):
- return pyatspi.utils.findDescendant(root, is_indicator_accessible, True)
-
-def get_accessible_index(root, node):
- for i in xrange(len(root)):
- if root[i] == node:
- return i
-
- return -1
-
-class IndicatorKeyboardTestCase(unity.tests.UnityTestCase):
-
- def setUp(self):
- super(IndicatorKeyboardTestCase, self).setUp()
-
- registry = pyatspi.registry.Registry()
- desktop = registry.getDesktop(0)
- panel = get_panel_accessible(desktop)
- self.indicator = get_indicator_accessible(panel)
-
- # This is needed on systems other than the EN locale
- os.putenv("LC_ALL", "C")
- self.addCleanup(os.unsetenv, "LC_ALL")
-
- def test_indicator(self):
- print_accessible(self.indicator)
diff --git a/tests/config.vala.in b/tests/config.vala.in
deleted file mode 100644
index ef533d33..00000000
--- a/tests/config.vala.in
+++ /dev/null
@@ -1,3 +0,0 @@
-const string DCONF_PROFILE = "@abs_top_builddir@/tests/profiles/indicator-keyboard-test";
-const string SERVICE_DIR = "@abs_top_builddir@/tests/services";
-const string XDG_RUNTIME_DIR = "@abs_top_builddir@/tests";
diff --git a/tests/execute/gkbd-keyboard-display b/tests/execute/gkbd-keyboard-display
deleted file mode 120000
index 0d3a8512..00000000
--- a/tests/execute/gkbd-keyboard-display
+++ /dev/null
@@ -1 +0,0 @@
-org.ayatana.indicator.keyboard.test.Execute \ No newline at end of file
diff --git a/tests/execute/gucharmap b/tests/execute/gucharmap
deleted file mode 120000
index 0d3a8512..00000000
--- a/tests/execute/gucharmap
+++ /dev/null
@@ -1 +0,0 @@
-org.ayatana.indicator.keyboard.test.Execute \ No newline at end of file
diff --git a/tests/execute/org.ayatana.indicator.keyboard.test.Execute b/tests/execute/org.ayatana.indicator.keyboard.test.Execute
deleted file mode 100755
index 58b0ce87..00000000
--- a/tests/execute/org.ayatana.indicator.keyboard.test.Execute
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-gdbus call -e -d org.ayatana.indicator.keyboard.test -o /org/ayatana/indicator/keyboard/test -m org.ayatana.indicator.keyboard.test.Execute "\'`basename $0` $*\'"
diff --git a/tests/execute/unity-control-center b/tests/execute/unity-control-center
deleted file mode 120000
index 0d3a8512..00000000
--- a/tests/execute/unity-control-center
+++ /dev/null
@@ -1 +0,0 @@
-org.ayatana.indicator.keyboard.test.Execute \ No newline at end of file
diff --git a/tests/fixture.vala b/tests/fixture.vala
deleted file mode 100644
index 7adc434f..00000000
--- a/tests/fixture.vala
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2014 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authored by Michal Hruby <michal.hruby@canonical.com>
- *
- * This file is taken from libunity.
- */
-
-/* A bit of magic to get proper-ish fixture support */
-public interface Fixture : Object
-{
- class DelegateWrapper
- {
- TestDataFunc func;
- public DelegateWrapper (owned TestDataFunc f) { func = (owned) f; }
- }
-
- public virtual void setup () {}
- public virtual void teardown () {}
-
- [CCode (has_target = false)]
- public delegate void Callback<T> (T ptr);
-
- private static List<DelegateWrapper> _tests;
-
- public static unowned TestDataFunc create<F> (Callback<void*> cb)
- requires (typeof (F).is_a (typeof (Fixture)))
- {
- TestDataFunc functor = () =>
- {
- var type = typeof (F);
- var instance = Object.new (type) as Fixture;
- instance.setup ();
- cb (instance);
- instance.teardown ();
- };
- unowned TestDataFunc copy = functor;
- _tests.append (new DelegateWrapper ((owned) functor));
- return copy;
- }
- public static unowned TestDataFunc create_static<F> (Callback<F> cb)
- {
- return create<F> ((Callback<void*>) cb);
- }
-}
-
-public static bool run_with_timeout (MainLoop ml, uint timeout_ms = 5000)
-{
- bool timeout_reached = false;
- var t_id = Timeout.add (timeout_ms, () =>
- {
- timeout_reached = true;
- debug ("Timeout reached");
- ml.quit ();
- return false;
- });
-
- ml.run ();
-
- if (!timeout_reached) Source.remove (t_id);
-
- return !timeout_reached;
-}
-
-/* calling this will ensure that the object was destroyed, but note that
- * it needs to be called with the (owned) modifier */
-public static void ensure_destruction (owned Object obj)
-{
- var ml = new MainLoop ();
- bool destroyed = false;
- obj.weak_ref (() => { destroyed = true; ml.quit (); });
-
- obj = null;
- if (!destroyed)
- {
- // wait a bit if there were async operations
- assert (run_with_timeout (ml));
- }
-}
-
-public class ErrorHandler
-{
- public ErrorHandler ()
- {
- GLib.Test.log_set_fatal_handler (handle_fatal_func);
- }
-
- private bool handle_fatal_func (string? log_domain, LogLevelFlags flags,
- string message)
- {
- return false;
- }
-
- private uint[] handler_ids;
- private GenericArray<string?> handler_domains;
-
- public void ignore_message (string? domain, LogLevelFlags flags)
- {
- handler_ids += Log.set_handler (domain, flags | LogLevelFlags.FLAG_FATAL,
- () => {});
- if (handler_domains == null)
- {
- handler_domains = new GenericArray<string?> ();
- }
- handler_domains.add (domain);
- }
-
- ~ErrorHandler ()
- {
- for(uint i = 0; i < handler_ids.length; i++)
- Log.remove_handler (handler_domains[i], handler_ids[i]);
- }
-}
diff --git a/tests/indicator-keyboard-test.in b/tests/indicator-keyboard-test.in
deleted file mode 100644
index 8c20f6bf..00000000
--- a/tests/indicator-keyboard-test.in
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-export PATH="@abs_top_builddir@/tests/execute:$PATH"
-export DCONF_PROFILE="@abs_top_builddir@/tests/profiles/indicator-keyboard-test"
-export GSETTINGS_SCHEMA_DIR="@abs_top_builddir@/data"
-export XDG_RUNTIME_DIR="@abs_top_builddir@/tests"
-export GTK_IM_MODULE="ibus"
-export GDK_BACKEND="x11"
-
-if xvfb-run -a ./indicator-keyboard-tests
-then
- pkill -f tests/gvfs || exit 0
-else
- pkill -f tests/gvfs && exit 1
-fi
diff --git a/tests/main.vala b/tests/main.vala
deleted file mode 100644
index 71e5e4a6..00000000
--- a/tests/main.vala
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- * Copyright 2013 Canonical Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: William Hua <william.hua@canonical.com>
- */
-
-const int TIMEOUT_S = 1;
-const int TIMEOUT_MS = 1000;
-const int LONG_TIMEOUT_S = 10;
-
-static string display;
-
-[DBus (name = "org.ayatana.indicator.keyboard.test")]
-public class Service : Object {
-
- [DBus (visible = false)]
- private string? _command;
-
- [DBus (visible = false)]
- public string? command {
- get { return _command; }
- }
-
- public void execute (string command) {
- _command = command;
-
- var pspec = get_class ().find_property ("command");
-
- if (pspec != null) {
- notify["command"] ((!) pspec);
- }
- }
-}
-
-public class Tests : Object, Fixture {
-
- private TestDBus? _bus;
- private uint _service_name;
- private DBusConnection? _connection;
- private Service? _service;
- private uint _object_name;
-
- public void start_service () {
- if (_connection != null) {
- try {
- _service = new Service ();
- _object_name = ((!) _connection).register_object ("/org/ayatana/indicator/keyboard/test", _service);
- } catch (IOError error) {
- _connection = null;
- _service = null;
- _object_name = 0;
-
- Test.message ("error: %s", error.message);
- Test.fail ();
- }
- }
- }
-
- public void setup () {
- Environment.set_variable ("DCONF_PROFILE", DCONF_PROFILE, true);
- Environment.set_variable ("DISPLAY", display, true);
- Environment.set_variable ("LC_ALL", "C", true);
-
- _bus = new TestDBus (TestDBusFlags.NONE);
- ((!) _bus).add_service_dir (SERVICE_DIR);
- ((!) _bus).up ();
-
- Environment.set_variable ("XDG_RUNTIME_DIR", XDG_RUNTIME_DIR, true);
-
- var loop = new MainLoop (null, false);
-
- _service_name = Bus.own_name (BusType.SESSION,
- "org.ayatana.indicator.keyboard.test",
- BusNameOwnerFlags.ALLOW_REPLACEMENT | BusNameOwnerFlags.REPLACE,
- (connection, name) => {
- if (loop.is_running ()) {
- _connection = connection;
- start_service ();
- loop.quit ();
- }
- },
- null,
- (connection, name) => {
- if (loop.is_running ()) {
- _connection = null;
- _service = null;
- _object_name = 0;
- loop.quit ();
- }
- });
-
- loop.run ();
-
- if (_connection == null) {
- Test.message ("error: Unable to connect to org.ayatana.indicator.keyboard.test.");
- Test.fail ();
- }
-
- if (_object_name == 0) {
- Test.message ("error: Test fixture not initialized.");
- Test.fail ();
- return;
- }
- }
-
- public void teardown () {
- if (_object_name != 0) {
- ((!) _connection).unregister_object (_object_name);
- _object_name = 0;
- }
-
- if (_service_name != 0) {
- Bus.unown_name (_service_name);
- _service_name = 0;
- }
-
- _service = null;
- _connection = null;
-
- if (_bus != null) {
- ((!) _bus).down ();
- _bus = null;
-
- Environment.set_variable ("XDG_RUNTIME_DIR", XDG_RUNTIME_DIR, true);
- }
- }
-
- public void test_activate_input_source () {
- try {
- var current = 0;
- var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]";
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var action_group = DBusActionGroup.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard");
- action_group.list_actions ();
- action_group.activate_action ("current", new Variant.uint32 (2));
-
- var loop = new MainLoop (null, false);
- Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; });
- loop.run ();
-
- var state = action_group.get_action_state ("current");
- var current = state.get_uint32 ();
- stderr.printf ("current = %u\n", current);
- assert (current == 2);
-
- try {
- string output;
- Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output);
- stderr.printf ("output = \"%s\"\n", output);
- assert (strcmp (output, "uint32 2\n") == 0);
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
- }
-
- public void test_activate_character_map () {
- var action_group = DBusActionGroup.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard");
- var loop = new MainLoop (null, false);
- var signal_name = ((!) _service).notify["command"].connect ((pspec) => {
- loop.quit ();
- });
-
- action_group.activate_action ("map", null);
-
- var source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- ((!) _service).disconnect (signal_name);
-
- stderr.printf ("_service.command = \"%s\"\n", (!) ((!) _service).command);
- assert (strcmp ((!) ((!) _service).command, "'gucharmap '") == 0);
- }
-
- public void test_activate_keyboard_layout_chart () {
- try {
- var current = 1;
- var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]";
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var action_group = DBusActionGroup.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard");
- var loop = new MainLoop (null, false);
- var signal_name = ((!) _service).notify["command"].connect ((pspec) => {
- loop.quit ();
- });
-
- action_group.activate_action ("chart", null);
-
- var source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- ((!) _service).disconnect (signal_name);
-
- stderr.printf ("_service.command = \"%s\"\n", (!) ((!) _service).command);
- assert (strcmp ((!) ((!) _service).command, "'gkbd-keyboard-display -l ca\teng'") == 0);
- }
-
- public void test_activate_text_entry_settings () {
- var action_group = DBusActionGroup.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard");
- var loop = new MainLoop (null, false);
- var signal_name = ((!) _service).notify["command"].connect ((pspec) => {
- loop.quit ();
- });
-
- action_group.activate_action ("settings", null);
-
- var source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- ((!) _service).disconnect (signal_name);
-
- stderr.printf ("_service.command = \"%s\"\n", (!) ((!) _service).command);
- assert (strcmp ((!) ((!) _service).command, "'unity-control-center region layouts'") == 0);
- }
-
- public void test_migration () {
- try {
- var migrated = false;
- var sources = "[('xkb', 'us')]";
- var layouts = "['us', 'ca\teng', 'epo']";
- Process.spawn_command_line_sync (@"gsettings set org.ayatana.indicator.keyboard migrated $migrated");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.libgnomekbd.keyboard layouts \"$layouts\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- try {
- var cancellable = new Cancellable ();
-
- var source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { cancellable.cancel (); return true; });
-
- var dbus_proxy = new DBusProxy.sync ((!) _connection,
- DBusProxyFlags.NONE,
- null,
- "org.freedesktop.DBus",
- "/",
- "org.freedesktop.DBus",
- cancellable);
-
- Source.remove (source);
-
- if (cancellable.is_cancelled ()) {
- Test.message ("error: Unable to connect to org.freedesktop.DBus.");
- Test.fail ();
- return;
- }
-
- dbus_proxy.call_sync ("StartServiceByName", new Variant ("(su)", "org.ayatana.indicator.keyboard", 0), DBusCallFlags.NONE, TIMEOUT_MS);
- } catch (Error error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var loop = new MainLoop (null, false);
- Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; });
- loop.run ();
-
- try {
- string sources;
- Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources sources", out sources);
- stderr.printf ("sources = \"%s\"\n", sources);
- assert (strcmp (sources, "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo')]\n") == 0);
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
- }
-
- public void test_no_migration () {
- try {
- var migrated = true;
- var sources = "[('xkb', 'us')]";
- var layouts = "['us', 'ca\teng', 'epo']";
- Process.spawn_command_line_sync (@"gsettings set org.ayatana.indicator.keyboard migrated $migrated");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.libgnomekbd.keyboard layouts \"$layouts\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- try {
- var cancellable = new Cancellable ();
-
- var source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { cancellable.cancel (); return true; });
-
- var dbus_proxy = new DBusProxy.sync ((!) _connection,
- DBusProxyFlags.NONE,
- null,
- "org.freedesktop.DBus",
- "/",
- "org.freedesktop.DBus",
- cancellable);
-
- Source.remove (source);
-
- if (cancellable.is_cancelled ()) {
- Test.message ("error: Unable to connect to org.freedesktop.DBus.");
- Test.fail ();
- return;
- }
-
- dbus_proxy.call_sync ("StartServiceByName", new Variant ("(su)", "org.ayatana.indicator.keyboard", 0), DBusCallFlags.NONE, TIMEOUT_MS);
- } catch (Error error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var loop = new MainLoop (null, false);
- Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; });
- loop.run ();
-
- try {
- string sources;
- Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources sources", out sources);
- stderr.printf ("sources = \"%s\"\n", sources);
- assert (strcmp (sources, "[('xkb', 'us')]\n") == 0);
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
- }
-
- public void test_update_visible () {
- bool visible;
-
- try {
- visible = true;
- Process.spawn_command_line_sync (@"gsettings set org.ayatana.indicator.keyboard visible $visible");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var action_group = DBusActionGroup.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard");
- var loop = new MainLoop (null, false);
- var signal_name = action_group.action_added["indicator"].connect ((action) => {
- loop.quit ();
- });
-
- action_group.list_actions ();
-
- var source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- action_group.disconnect (signal_name);
-
- var state = action_group.get_action_state ("indicator");
- assert (state.lookup ("visible", "b", out visible));
- stderr.printf ("visible = %s\n", visible ? "true" : "false");
- assert (visible);
-
- loop = new MainLoop (null, false);
- signal_name = action_group.action_state_changed["indicator"].connect ((action, state) => {
- loop.quit ();
- });
-
- try {
- visible = false;
- Process.spawn_command_line_sync (@"gsettings set org.ayatana.indicator.keyboard visible $visible");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- action_group.disconnect (signal_name);
-
- state = action_group.get_action_state ("indicator");
- assert (state.lookup ("visible", "b", out visible));
- stderr.printf ("visible = %s\n", visible ? "true" : "false");
- assert (!visible);
-
- loop = new MainLoop (null, false);
- signal_name = action_group.action_state_changed["indicator"].connect ((action, state) => {
- loop.quit ();
- });
-
- try {
- visible = true;
- Process.spawn_command_line_sync (@"gsettings set org.ayatana.indicator.keyboard visible $visible");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- action_group.disconnect (signal_name);
-
- state = action_group.get_action_state ("indicator");
- assert (state.lookup ("visible", "b", out visible));
- stderr.printf ("visible = %s\n", visible ? "true" : "false");
- assert (visible);
- }
-
- public void test_update_input_source () {
- try {
- var current = 0;
- var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]";
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var action_group = DBusActionGroup.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard");
- var loop = new MainLoop (null, false);
- var signal_name = action_group.action_state_changed["current"].connect ((action, state) => {
- loop.quit ();
- });
-
- action_group.list_actions ();
-
- try {
- var current = 1;
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- action_group.disconnect (signal_name);
-
- var state = action_group.get_action_state ("current");
- var current = state.get_uint32 ();
- stderr.printf ("current = %u\n", current);
- assert (current == 1);
-
- try {
- string output;
- Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output);
- stderr.printf ("output = \"%s\"\n", output);
- assert (strcmp (output, "uint32 1\n") == 0);
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- loop = new MainLoop (null, false);
- signal_name = action_group.action_state_changed["current"].connect ((action, state) => {
- loop.quit ();
- });
-
- try {
- current = 0;
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- action_group.disconnect (signal_name);
-
- state = action_group.get_action_state ("current");
- current = state.get_uint32 ();
- stderr.printf ("current = %u\n", current);
- assert (current == 0);
-
- try {
- string output;
- Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output);
- stderr.printf ("output = \"%s\"\n", output);
- assert (strcmp (output, "uint32 0\n") == 0);
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
- }
-
- public void test_update_input_sources () {
- try {
- var current = 0;
- var sources = "[('xkb', 'us')]";
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- var menu_model = DBusMenuModel.get ((!) _connection,
- "org.ayatana.indicator.keyboard",
- "/org/ayatana/indicator/keyboard/desktop");
- var loop = new MainLoop (null, false);
- var signal_name = menu_model.items_changed.connect ((position, removed, added) => {
- loop.quit ();
- });
-
- menu_model.get_n_items ();
-
- var source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- menu_model.disconnect (signal_name);
-
- var menu = menu_model.get_item_link (0, Menu.LINK_SUBMENU);
- loop = new MainLoop (null, false);
- signal_name = menu.items_changed.connect ((position, removed, added) => {
- loop.quit ();
- });
-
- menu.get_n_items ();
-
- source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- menu.disconnect (signal_name);
-
- var section = menu.get_item_link (0, Menu.LINK_SECTION);
- loop = new MainLoop (null, false);
- signal_name = section.items_changed.connect ((position, removed, added) => {
- loop.quit ();
- });
-
- section.get_n_items ();
-
- source = Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- section.disconnect (signal_name);
-
- string label;
-
- stderr.printf ("section.get_n_items () = %d\n", section.get_n_items ());
- assert (section.get_n_items () == 1);
- section.get_item_attribute (0, Menu.ATTRIBUTE_LABEL, "s", out label);
- stderr.printf ("label = \"%s\"\n", label);
- assert (strcmp (label, "English (US)") == 0);
-
- loop = new MainLoop (null, false);
- signal_name = section.items_changed.connect ((position, removed, added) => {
- if (section.get_n_items () == 4) {
- loop.quit ();
- }
- });
-
- try {
- var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]";
- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
- } catch (SpawnError error) {
- Test.message ("error: %s", error.message);
- Test.fail ();
- return;
- }
-
- source = Timeout.add_seconds (LONG_TIMEOUT_S, () => { loop.quit (); return true; });
- loop.run ();
- Source.remove (source);
- section.disconnect (signal_name);
-
- stderr.printf ("section.get_n_items () = %d\n", section.get_n_items ());
- assert (section.get_n_items () == 4);
- section.get_item_attribute (0, Menu.ATTRIBUTE_LABEL, "s", out label);
- stderr.printf ("label = \"%s\"\n", label);
- assert (strcmp (label, "English (US)") == 0);
- section.get_item_attribute (1, Menu.ATTRIBUTE_LABEL, "s", out label);
- stderr.printf ("label = \"%s\"\n", label);
- assert (strcmp (label, "English (Canada)") == 0);
- section.get_item_attribute (2, Menu.ATTRIBUTE_LABEL, "s", out label);
- stderr.printf ("label = \"%s\"\n", label);
- assert (strcmp (label, "Esperanto") == 0);
- section.get_item_attribute (3, Menu.ATTRIBUTE_LABEL, "s", out label);
- stderr.printf ("label = \"%s\"\n", label);
- assert (label.ascii_casecmp ("Pinyin") == 0);
- }
-}
-
-public int main (string[] args) {
- display = Environment.get_variable ("DISPLAY");
-
- Test.init (ref args);
-
- Test.add_data_func ("/indicator-keyboard-service/activate-input-source", Fixture.create<Tests> (Tests.test_activate_input_source));
- Test.add_data_func ("/indicator-keyboard-service/activate-character-map", Fixture.create<Tests> (Tests.test_activate_character_map));
- Test.add_data_func ("/indicator-keyboard-service/activate-keyboard-layout-chart", Fixture.create<Tests> (Tests.test_activate_keyboard_layout_chart));
- Test.add_data_func ("/indicator-keyboard-service/activate-text-entry-settings", Fixture.create<Tests> (Tests.test_activate_text_entry_settings));
- Test.add_data_func ("/indicator-keyboard-service/migration", Fixture.create<Tests> (Tests.test_migration));
- Test.add_data_func ("/indicator-keyboard-service/no-migration", Fixture.create<Tests> (Tests.test_no_migration));
- Test.add_data_func ("/indicator-keyboard-service/update-visible", Fixture.create<Tests> (Tests.test_update_visible));
- Test.add_data_func ("/indicator-keyboard-service/update-input-source", Fixture.create<Tests> (Tests.test_update_input_source));
- Test.add_data_func ("/indicator-keyboard-service/update-input-sources", Fixture.create<Tests> (Tests.test_update_input_sources));
-
- return Test.run ();
-}
diff --git a/tests/manual b/tests/manual
deleted file mode 100644
index 67ee57da..00000000
--- a/tests/manual
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Test-case indicator-keyboard/unity7-items-check
-<dl>
- <dt>Log in to a Unity 7 user session</dt>
- <dt>Go to the panel and click on the Keyboard indicator</dt>
- <dd>Ensure there are items in the menu</dd>
-</dl>
-
-Test-case indicator-keyboard/unity7-greeter-items-check
-<dl>
- <dt>Start a system and wait for the greeter or logout of the current user session</dt>
- <dt>Go to the panel and click on the Keyboard indicator</dt>
- <dd>Ensure there are items in the menu</dd>
-</dl>
-
diff --git a/tests/profiles/indicator-keyboard-test b/tests/profiles/indicator-keyboard-test
deleted file mode 100644
index 5268b3f5..00000000
--- a/tests/profiles/indicator-keyboard-test
+++ /dev/null
@@ -1 +0,0 @@
-service-db:shm/indicator_keyboard_test
diff --git a/tests/services/ayatana-indicator-keyboard.service.in b/tests/services/ayatana-indicator-keyboard.service.in
deleted file mode 100644
index 01b42ad1..00000000
--- a/tests/services/ayatana-indicator-keyboard.service.in
+++ /dev/null
@@ -1,3 +0,0 @@
-[D-BUS Service]
-Name=org.ayatana.indicator.keyboard
-Exec=@abs_top_builddir@/lib/indicator-keyboard-service
diff --git a/tests/services/ca.desrt.dconf.service b/tests/services/ca.desrt.dconf.service
deleted file mode 100644
index 7ce3879b..00000000
--- a/tests/services/ca.desrt.dconf.service
+++ /dev/null
@@ -1,3 +0,0 @@
-[D-BUS Service]
-Name=ca.desrt.dconf
-Exec=/usr/lib/dconf/dconf-service
diff --git a/tests/services/gvfs-daemon.service b/tests/services/gvfs-daemon.service
deleted file mode 100644
index 1a8607d6..00000000
--- a/tests/services/gvfs-daemon.service
+++ /dev/null
@@ -1,3 +0,0 @@
-[D-BUS Service]
-Name=org.gtk.vfs.Daemon
-Exec=/usr/lib/gvfs/gvfsd
diff --git a/update-po.sh b/update-po.sh
index 5f9e9fdb..59ad5c45 100755
--- a/update-po.sh
+++ b/update-po.sh
@@ -16,7 +16,7 @@ set -x
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
-GETTEXT_DOMAIN=$(cat configure.ac | grep -E "^GETTEXT_PACKAGE=" | sed -e 's/GETTEXT_PACKAGE=//')
+GETTEXT_DOMAIN=$(cat CMakeLists.txt | grep 'set.*(.*GETTEXT_PACKAGE' | sed -r -e 's/.*\"([^"]+)\"\)/\1/')
cp po/${GETTEXT_DOMAIN}.pot po/${GETTEXT_DOMAIN}.pot~
@@ -28,10 +28,11 @@ cat LINGUAS | while read lingua; do
intltool-update --gettext-package ${GETTEXT_DOMAIN} $(basename ${lingua})
fi
- sed -e 's/\.xml\.in\.h:/.xml.in:/g' \
- -e 's/\.ini\.in\.h:/.ini.in:/g' \
- -e 's/\.xml\.h:/.xml:/g' \
- -e 's/\.ini\.h:/.ini:/g' \
+ sed -e 's/\.xml\.in\.in\.h:/.xml.in.in:/g' \
+ -e 's/\.xml\.in\.h:/.xml.in:/g' \
+ -e 's/\.ini\.in\.h:/.ini.in:/g' \
+ -e 's/\.xml\.h:/.xml:/g' \
+ -e 's/\.ini\.h:/.ini:/g' \
-i ${lingua}.po
done
diff --git a/update-pot.sh b/update-pot.sh
index b0cb9b5c..db9c8931 100755
--- a/update-pot.sh
+++ b/update-pot.sh
@@ -14,12 +14,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
-GETTEXT_DOMAIN=$(cat configure.ac | grep -E "^GETTEXT_PACKAGE=" | sed -e 's/GETTEXT_PACKAGE=//')
+GETTEXT_DOMAIN=$(cat CMakeLists.txt | grep 'set.*(.*GETTEXT_PACKAGE' | sed -r -e 's/.*\"([^"]+)\"\)/\1/')
cd po/ && intltool-update --gettext-package ${GETTEXT_DOMAIN} --pot && cd - 1>/dev/null
-sed -e 's/\.xml\.in\.h:/.xml.in:/g' \
- -e 's/\.ini\.in\.h:/.ini.in:/g' \
- -e 's/\.xml\.h:/.xml:/g' \
- -e 's/\.ini\.h:/.ini:/g' \
+sed -e 's/\.xml\.in\.in.\h:/.xml.in.in:/g' \
+ -e 's/\.xml\.in\.h:/.xml.in:/g' \
+ -e 's/\.ini\.in\.h:/.ini.in:/g' \
+ -e 's/\.xml\.h:/.xml:/g' \
+ -e 's/\.ini\.h:/.ini:/g' \
-i po/${GETTEXT_DOMAIN}.pot